lviper
Участник форума
- Регистрация
- 27 Дек 2015
- Сообщения
- 60
- Благодарности
- 74
- Баллы
- 165
Шапка в разработке
Неофициальный фикс на память для игр Готика 1 - Готика 2: Ночь Ворона подменяет оригинальную библиотеку для работы с памятью SmartHeap на более новую Hoard, которая лучше работает на современных компьютерах. Особенно полезно для больших аддонов и модов, где уменьшает фризы и вероятность вылета с OutOfMemory, но может использоваться и на чистой игре без каких-либо модов.
Установка:
0) VS 2015 C++ Redistributable: https://www.microsoft.com/ru-ru/download/details.aspx?id=48145
1) Создание резервной копии shw32.dll из Г2НВ/System (не пропускайте этот шаг, это важно, правда!)
2) Распаковка архива и копирование из него dll файлов в Г2НВ/System с заменой
На x64 системах рекомендуется применять совместно с 4gb_patch (хотя и не обязательно).
Отписывайтесь, и пожалуйста указывайте версию виндовс, ее разрядность, процессор, объем оперативной памяти и установлен ли 4gb_patch. Если игра запускалась с модом/аддоном указывайте также его и его версию.
В настоящий момент библиотека еще не тестировалась с Готикой 1, но игра с ней нормально запускается и работает. Если будут какие-то проблемы, фаталы можете отписываться в этой же теме. Также у меня не было возможности проверить работоспособность на оригинальной Г2 без аддона, но скорее всего тоже должно работать,
Версия обновлена v06 (16.01.2016).
Изменения:
Уменьшено требование к резервированию памяти при включенном MessageBox
Добавлена опция bUseNewHandler в ini-файл, позволяющая выбирать способ отлова OutOfMemory как в версиях v03a- или v04+.
Исходники удалены из архива.
Полная история изменений содержится в Архиве версий.
Добавлена опция bUseNewHandler в ini-файл, позволяющая выбирать способ отлова OutOfMemory как в версиях v03a- или v04+.
Исходники удалены из архива.
Полная история изменений содержится в Архиве версий.
Настройки, добавляемые в SystemPack.ini:
Код:
[SHW32]
reserveInMb=50 ; (v05+) Сколько резервировать (в Мб)
bShowGothicError=1 ; (v05+) Использовать обработчик ошибок Готики (показывать окно фатала со стеком)
bShowMsgBox=0 ; (v05+) показывать MessageBox
bUseNewHandler=1 ; (v06+) использовать обработчик OutOfMemory из (v04+)
5 - минимальное значение, оптимально если отключать bShowGothicError или если у вас не установлен 4gb_patch и часты вылеты по OutOfMemory
30-60 - хороший выбор, если не включать bShowMsgBox, с большой вероятностью правильно сохраняет стек.
120-150 - применять только с 4gp_patch, хороший выбор, если включать bShowMsgBox и bShowGothicError или если важно что программа по возможности более корректно завершится при включенном bShowGothicError.
300 - максимальное значение
bShowGothicError - показывать ли ошибку готики (1 - да, по умолчанию), (0 - нет) в случае возникновения OutOfMemory.
Если выключенно, то в этом случае вы можете резервировать минимальное количество памяти, однако не будет сообщение о фатале и игра не сможет обработать эту ошибку. Это похоже на то, как если бы при OutOfMemory готика автоматически завершалась через диспетчер задач, не оставляя никакого сообщения об ошибке, что не рекомендуется. Если выключен также и bShowMsgBox, то игра просто закрывается при OutOfMemory, без каких-либо уведомлений.
В v05 отключение срабатывает не всегда и иногда игра все-таки окно Готики даже при bShowGothicError = 1.
bShowMsgBox - показывать стандартную для виндовс сообщение об ошибке с текстом OutOfMemory. Теперь-то вы точно будете знать, что произошел именно OutOfMemory, а не какой-то другой фатал. Правда при включенном bShowGothicError в v05 требует резервирования большого количества памяти.
bUseNewHandler - вид используемого обработчика OutOfMemory
0 - отлавливать только те OutOfMemory, которые произошли при вызове методов из shw32.dll. Этот метод применялся в версиях v03a-
1 (по умолчанию) - позволяет отловить OutOfMemory во всех модулях, даже если они используют свой аллокатор, а не обращаются к shw32.dll. Использовался в (v04-v05). Однако у некоторых пользователей он может вызывать микрофризы в городе, в этом случае рекомендуется установить 0.
Просьба для тех кто хочет залить фикс на другой ресурс:
Если у вас фикс запустился и помог, я вполне могу понять ваше возможное желание поделиться им с другими. И с формальной точки зрения, лицензия GPL 2.0, под которой был опубликован фикс из-за Hoard позволяет вам это сделать как угодно, даже не ставив меня в известность, так что запретить вам это я тоже не могу.
И тем не менее, у меня просьба, пока что не распространять его, поскольку в этом случае я не буду иметь большой статистики работоспособности и не смогу вносить исправления (если еще будут) и получать отзывы.
Даже если с текущим билдом все хорошо, мне еще хотелось бы подредактировать readme.
Спасибо за понимание.
И тем не менее, у меня просьба, пока что не распространять его, поскольку в этом случае я не буду иметь большой статистики работоспособности и не смогу вносить исправления (если еще будут) и получать отзывы.
Даже если с текущим билдом все хорошо, мне еще хотелось бы подредактировать readme.
Спасибо за понимание.
Добавлены сборки с другими библиотеками аллокации, а именно с JeMalloc, TCMalloc и CRT. Забирать из архива версий. Если у вас проблема с Hoard, или просто есть желание протестировать с какой пойдет лучше, можете попробовать их.
Архив версий
Вложения
Последнее редактирование: