Показать сообщение отдельно
Старый 07.12.2007, 16:46   #129
Dimus

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Gothic 1, 2, 3: Технические вопросы

2 Mark LT:
Да, НО, как решать подобные проблемы?
Здесь возможны 2 варианта:
1. Добавить приложению памяти до 3 ГБ на 32-битной Windows (на 64-битной - до 4 ГБ)
Описание способа когда-то давно видел в техническом FAQ:
Cпойлер(щелкните, чтобы прочесть):
Может кому-нибудь пригодится.

Один добрый человек на форуме IXBT в теме "FAQ = S.T.A.L.K.E.R.: Shadow of Chernobyl (Stalker | Сталкер) - настройки, производительность, технические проблемы и их решение" выложил подробную инструкцию, как заставить программу использовать в 32-битной версии XP до 3Гб ОЗУ, если она изначально этого не поддерживала.

Andy77
Решение проблемы с вылетами Сталкера на Vista x86 и x64 НА МАКСИМАЛЬНЫХ НАСТРОЙКАХ.

Итак имеется Игра, GeForce 8800, Windows Vista Business 64 bit, 2 GB оперативной памяти, 3 GB своп. Настройки - все ползунки на максимум, кроме антиалиасинга, потому что не работает.
Запуск игры, работа в течение 5-10 минут потом спонтанный вылет на рабочий стол из игры, при нажатии Esc или при попытке записи. Знакомые многим симптомы.
Причина вылетов банальна - в логах игры out of memory, что означает недостаточно памяти. Напомню, у меня общий объем доступной Windows памяти целых 5 GB (2 GB + 3 GB). Приложение завершается аварийно, как только объем используемой операционной системой памяти становится равным ровно 2 GB. Попытка приложения запросить чуть больше - здравствуй рабочий стол.
Не знаю, какой патч там пишут разработчики, наверное пытаются уменьшить объем используемой приложением памяти, скорее всего поможет не всем, потому что проблема ОБЩЕГО ОБЪЕМА 2 GB все равно останется. XR_3DA.exe (запускаемый файл Сталкера) 32 битное и собрано оно без флага линковщика /LARGEADDRESSAWARE. Этот волшебный флаг (хинт разработчикам, если они читают этот пост) позволяет 32 битным приложениям адресовать не 2 GB, а 4 GB на 64 разрядной версии Windows и 3 GB на 32 разрядной версии Windows (если 32 битная операционная система запущена с ключом /3GB).
Короче разработчики о флаге /LARGEADDRESSAWARE не догадываются и мы имеем ограничение на объем памяти 2 GB. Можно пересобрать приложение с этим флагом, а можно в текущем exe установить этот флаг с помощью утилиты editbin.exe, которая входит в состав Microsoft Visual Studio 2005.

Итак решение проблемы вылетов:
1) патчим XR_3DA.exe файл, чтобы он мог адресовать больше чем 2 GB:
editbin.exe /LARGEADDRESSAWARE XR_3DA.exe
2) Для 32 битных Windows XP в boot.ini прописать ключ загрузки /3GB в boot.ini
Для 32 бит Vista, выполнить команду с правами администратора:
BCDEDIT /Set IncreaseUserVa 3072
и перезагрузиться.

После этого 32-битному приложению с установленным флагом LARGEADDRESSAWARE будет доступно 3 GB.
Подробнее про IncreaseUserVa описано здесь:
http://blogs.technet.com/brad_rutkowski/archive/2006…-Vista_3F00_.aspx

3) на 64 битных Windows ключ /3GB не нужен
4) файл подкачки ставим таким чтобы в целом памяти в системе было гигабайта 3 или больше (RAM + файл подкачки >= 3 GB)
5) Запускаем и играем без вылетов.

P.S. Патч игры вполне законный, т.к. сама Microsoft рекомендует при компиляции 32 битных приложений интенсивно использующих память использовать этот флаг.
P.P.S. Использование бета драйвера (совет из оф FAQ) проблему вылетов не решает (в моем случае точно).
P.P.P.S. Флаг применим к SecuROM (защита Tages на европейской Gothic 3) или noDVD версии. На StarForce версии (локализация Gothic 3 от GFI/РуссоБит-М) проверяется контрольная сумма и после добавления флага игра не запустится.

Вот ссылки по теме:
http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx
http://msdn2.microsoft.com/en-us/library/bb147385.aspx

P.S. скачать утилиту editbin.exe (23.8 МБ) можно с 1й станицы этой темы.

P.P.S. правильно должно быть для игры "Сталкер"
"editbin.exe /LARGEADDRESSAWARE XR_3DA.exe"
а для игры "Gothic 3"
"editbin.exe /LARGEADDRESSAWARE Gothic3.exe"

Удачной охоты.

Дополнение к пункту 2: в boot.ini кроме ключа /3GB можно добавить ключ /USERVA=2990 (если не будет работать, уменьшить значение до 2900 или 2800).

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