Устранение ошибок в SpaceEngine 0.96
|
|
SpaceEngineer | Дата: Четверг, 05.07.2012, 23:31 | Сообщение # 1 |
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
| Часто причину ошибки можно узнать из файла лога se.log, открыв его в текстовом редакторе. Пожалуйста, при описании ошибки на форуме или по почте обязательно прикладывайте к сообщению этот файл.
1) Устаревшие или несовместимые драйвера. Если у вас устаревишие драйвера, при запуске SpaceEngine появится окно с одним из слдующих сообщений:
А английской версии: "You have old OpenGL version (2.1.1). Update your graphics card driver or install compatible hardware" "You have old GLSL version (1.2). Update your graphics card driver or install compatible hardware" "Critical extensions missing: GL_ARB_vertex_program GL_ARB_vertex_buffer_object" "Error loading surface generator shaders. Press YES to run program with procedural planets disabled. Press NO to exit"
А русской версии: "Ваша система имеет старую версию OpenGL (2.1.1). Обновите драйвер графической карты или установите совместимую видеокарту." "Ваша система имеет старую версию GLSL (1.2). Обновите драйвер графической карты или установите совместимую видеокарту." "Критические расширения отсутствуют: GL_ARB_vertex_program GL_ARB_vertex_buffer_object" "Невозможно загрузить шейдеры генератора поверхности. Нажмите ДА для запуска программы с отключенными процедурными планетами. Нажмите НЕТ для выхода"
Загрузите и установите последнюю версию драйверов для вашей видеокарты. Если Вы все еще получаете данное сообщение, может быть, что у вас есть несовместимые видеокарта (см. следующий пункт). Но вы все равно можете попытаться запустить SpaceEngine, отключив проверку критических ошибок при запуске. Откройте main.cfg и измените значение этого параметра на true:
IgnoreCriticalCheck true // ignore checking of OpenGL version and critical extensions supporting
ПРИМЕЧАНИЕ: если у вас несовместимые драйвера и вы вносите это изменение, стабильная и правильная работа SpaceEngine не гарантируется.
Если у вас ошибка "Error loading surface generator shaders" ("Невозможно загрузить шейдеры генератора поверхности") и вы нажали ДА, SpaceEngine может запуститься, но не сможет генерировать и отображать ландшафт на процедурных планетах.
2) Слабая система Большинство писем о невозможности запустить SpaceEngine приходят от пользователей, у которых встроенная офисная видеокарта Intel или какая-нибудь древняя GeForce 5700, или не "игровой" ноутбук. Тут выхода нет, обновите систему. Не планируется делать вторую версию движка для слабых систем с упрощённой графикой, генерацией текстур на процессоре и т.д. Это всё равно, что написать ещё один движок. Ещё раз напомню минимальные системные требования, которые можно увидеть на главной странице:
Процессор 2 ГГц Оперативня память 2 Гб Видеокарта с выделенной памятью 512 Мб и поддержкой OpenGL 3.0
Подчеркну, что особую роль играет объём памяти видеокарты (vRAM). 512 Мб - абсолютный минимум. Движок использует большие объёмы данных, которые должны быть в видеопамяти (текстуры, меши, vbo). Если ваша система удовлетворяет рекомендуемым требованиям, движок должен работать:
Процессор 3 ГГц Оперативня память 2 Гб Видеокарта с выделенной памятью 1024 Мб и поддержкой OpenGL 3.0
Можно попытаться запустить движок, отключив некоторые расширения, если они у вас не поддерживаются или тормозят: frame buffer objects, half float, float текстуры и 3D текстуры. Информация об этом пишется в самом начале лога (файл se.log в корневой папке программы), после списка расширений:
Framebuffer objects supported Half floats suppoted Floating-point pixel format: GL_RGBA16F_ARB 3D textures suppoted
Если где-то написано unsupported, значит расширение не поддерживается и движок сам его отключил. Если у вас вроде бы поддерживаются float и 3D текстуры, но при этом атмосферы планет чудовищно тормозят, как например на GeForce 6200 и GeForce 6600, то лучше отключить их принудительно. Это делается в файле config/main.cfg:
r_IgnoreFBO false // не отключать frame buffer objects r_IgnoreHalfFloat false // не отключать half float r_IgnoreFloatTextures true // отключить float текстуры r_Ignore3DTextures true // отключить 3D текстуры
Справка: Атмосферы используют float и 3D текстуры. Отключение любого из них отключает атмосферы. Режим HDR рендеринга использует float текстуры, отключение их отключает HDR. Звёзды, галактики и все далёкие объекты в виде точек используют half float. Отключение half float не отключает звёзды и т.д., но приводит к большему потреблению памяти (используются float вершинные буферы). Млечный Путь и другие близкие галактики и туманности используют FBO. Режим HDR рендеринга также использует FBO. Отключение FBO отключает модели галактик и туманностей и отключает режим HDR.
3) Космические корабли исчезают вдалеке от звёзд Это не ошибка. В текущей версии корабли не доделаны - они не рисуются вне планетной системы. Просто представьте, что корабли становятся невидимыми, когда совершают межзвёздный полёт
4) Размытые текстуры на планетах Солнечной системы Это не ошибка. Планеты нашей Солнечной системы (Меркурий, Венера, Земля, Луна, Марс, Юпитер, Сатурн, Уран, Нептун и их спутники) не имеют процедурных текстур, а имеют фотографические текстуры, полученные в результате реальных исследований спутниками и зондами. Эти текстуры имеют ограниченный уровнь детализации, в районе 1-10 км на пиксель. Можно увеличить детализацию в несколько раз, скачав и установив дополнения - текстуры планет Солнечной системы высокого разрешения.
5) Артефакты на процедурных планетах Если вы замечаете пропадание блоков ландшафта, размытые текстуры или мигание текстур, странные шпили торчащие из поверхности планеты, попробуйте эти решения:
a)Если у вас ноутбук с двумя видеокартами, убедитесь, что SE запускается на производительной видеокарте NVidia или ATI, а не на Intel HD. Это можно увидеть в начале лог-файла se.log. Если там написано: Vendor: Intel Renderer: Intel® HD Graphics 4000 то вам необходимо открыть Панель управления NVidia (NVidia Control Panel) или ATI Catalyst и указать в настройках SpaceEngine.exe, чтобы он запускался на видеокарте NVidia/ATI. Если SpaceEngine.exe нет в списке программ, создайте новый профиль для него.
b)Убедитесь, что вы сделали "чистую" установку SpaceEngine, т.е. в новую папку. При установке новой версии поверх старой, вы можете получить много ошибок и глюков. Если вы получаете какие-то ошибки после установки обновления, удалите папку кэша (cache/) из каталога SpaceEngine.
c) Отключите опцию "Быстрая загрузка ландшафта" ("Fast landscape loading") в меню графических настроек (Ctrl+F4).
d) Если это не помогает, читайте следующий пункт.
6) Частые падения при загрузке поверхности планеты Если у вас частые падения SpaceEngine на планетах, или на экране появляется сообщение "OUT OF MEMORY", или сообщение "Unexpected deleting of child node" в лог-файле, попробуйте сначала предпринять следующие действия:
Отключите опцию "Быстрая загрузка ландшафта" ("Fast landscape loading") в меню графических настроек (Ctrl+F4) Отключите опцию "3D вода" ("3D water") в меню графических настроек (Ctrl+F4) Уменьшите "LOD ландшафта" ("Landscape LOD") до значения -2 в меню графических настроек (Ctrl+F4) Уменьшите значение переметра VideoMemoryMaxPercent в main.cfg до 70...80
Если это не погает, читайте дальше:
a)Обязательно закройте все программы, которые могут использовать видеопамять (игры, видеоплееры, графические редакторы и т.д.). SpaceEngine - не флэш игра, для него видеопамять - самый главный ресурс. Может помочь отключиние Windows Aero - оно потребляет много видеопамяти.
b) Откройте se.log и посмотрите в его начале, правильно ли определился объем памяти видеокарты:
Total video memory: 1024 Mb Available video memory: 981 Mb Dynamic video memory detection disabled.
Если после Available video memory написана величина, существенно меньшая, чем реальный объём вашей видеопамяти, значит запущены какие-то программы, активно использующие видеопамять - см. пункт "a". Если написано
Dynamic video memory detection unsupported. Value 1024 Mb from config will be used.
или
Can't determine total video memory size. Value 1024 Mb from config will be used.
это значит что ваш драйвер не поддерживает определение объема видеопамяти. Если обновление драйвера не помогло, укажите объем видеопамяти в конфиге main.cfg:
VideoMemorySize 768 // объем вашей видеопамяти в Мб VideoMemoryMaxPercent 90 // сколько процентов видеопамяти можно использовать движку VideoMemoryStartupDetect false // false - отключить автоматическое определение объема видеопамяти при запуске VideoMemoryDynamicDetect false // false - отключить автоматическое определение объема видеопамяти в рантайме
Если после этого глюки или падения продолжаются, попробуйте уменьшить или увеличить параметр
VideoMemoryMaxPercent 75 // сколько процентов видеопамяти можно использовать движку
Но не делайте его равным 100, ведь Windows тоже использует около 20-30 Мб видеопамяти.
c) Если у вас меньше 512 Мб видеопамяти, откройте меню графических настроек (Ctrl+F4), отключите "3D воду" ("3D water") и уменьшите "LOD ландшафта" ("Landscape LOD") до значения -2. Потом пропбуйте отключить процедурные галактики и звёзды. В этом случае вы можете летать в окрестностях Солнца среди звёзд каталога HIPPARCOS и посещать их планеты. Отключение делается в меню настроек показа объектов (Show objects), которое вызывается нажатием клавиши F4. Необходимо отключить процедурные галактики (Galaxies -> Procedural), процедурные звёзды (Stars -> Procedural) и процедурные планеты (Planets -> Procedural). Если не отключить процедурные планеты, то процедурные звёзды будут продолжать использоваться. Отключать процедурные планеты у звёзд каталога (Planets -> Procedural on catalog stars) не нужно, они не влияют на это.
|
|
| |
Space | Дата: Понедельник, 09.07.2012, 14:52 | Сообщение # 2 |
Космический турист
Группа: Пользователи
Украина
Сообщений: 36
Награды: 0
Статус: Offline
| У меня вылетает при загрузке текстур пишет nvidia driver opengl в обще даже таких ошибок не было раньше
|
|
| |
system1024 | Дата: Понедельник, 09.07.2012, 14:57 | Сообщение # 3 |
Исследователь
Группа: Пользователи
Российская Федерация
Сообщений: 190
Награды: 0
Статус: Offline
| Quote (Space) У меня вылетает при загрузке текстур пишет nvidia driver opengl в обще даже таких ошибок не было раньше
Я думаю лучше вопрос задать в соответствующей теме, с более подробным описанием и логом
"- Ничто так не меняет человека, как космос и переходный возраст" © Ники Буян
AMD FX 4100 4.41 Ghz Nvidia GeForce 550 Ti 1 Gb RAM 8 Gb 1600 Mhz OS Win 7 Ultimate x64
|
|
| |
IvGrad | Дата: Воскресенье, 15.07.2012, 00:03 | Сообщение # 4 |
Космический пилот
Группа: Пользователи
Российская Федерация
Сообщений: 126
Награды: 1
Статус: Offline
| SpaceEngineer
Заметил такую особенность - если исследовать планету на шаттле, то SpaceEngine 0.9.6.1 beta больше не вылетает. Хотя быть может связано это с тем, что при полёте - поверхность планеты не так детально прорисовывается, как при исследовании в режиме камеры.
И вопрос - возможно ли реализовать управление вектором движения шаттла с помощью мыши?
|
|
| |
GatesofAmalgam | Дата: Воскресенье, 15.07.2012, 03:00 | Сообщение # 5 |
Исследователь
Группа: Пользователи
Российская Федерация
Сообщений: 158
Награды: 0
Статус: Offline
| Почему не так детально то? Полет получается медленнее, ландшафт генерируется постепенно, не так как с камерой - сразу всё с максимальной нагрузкой. Или я чего-то не учел?
i5 2500k@4.0ггц - 24гб RAM - GTX 570, 1280мб - SSD 240гб Intel 520 - Win7x64
|
|
| |
IvGrad | Дата: Воскресенье, 15.07.2012, 07:43 | Сообщение # 6 |
Космический пилот
Группа: Пользователи
Российская Федерация
Сообщений: 126
Награды: 1
Статус: Offline
| GatesofAmalgam
Наоборот. Полёт обычно происходит на большей высоте над поверхностью, чем при исследовании камерой. И скорость при полёте обычно выше. Ландшафт просто не успевает генерироваться в полном объёме. Отсюда и отсутствие вылетов. Опять же наводит на размышления следующее сообщение:
Quote Изменён алгоритм расчёта детализации планет - вблизи камеры детализация всегда высокая (как при LOD 0) для любого LOD Ведь вылеты обычно происходят после того, как ландшафт десяток раз полностью генерируется вблизи камеры.
Сообщение отредактировал IvGrad - Воскресенье, 15.07.2012, 07:43 |
|
| |
Crab | Дата: Воскресенье, 15.07.2012, 13:49 | Сообщение # 7 |
Первооткрыватель
Группа: Модераторы
Российская Федерация
Сообщений: 444
Награды: 1
Статус: Offline
| Мне помогло отключение автодетекта видеопамяти и установки её около 1024.
Windows 8 x64 Intel Core2 Duo CPU E7500 2.93GHz. 4 GB RAM. Nvidia GeForce 550Ti 1024mb.
|
|
| |
IvGrad | Дата: Воскресенье, 15.07.2012, 16:18 | Сообщение # 8 |
Космический пилот
Группа: Пользователи
Российская Федерация
Сообщений: 126
Награды: 1
Статус: Offline
| Crab
Ценный совет!!! Достаточно было выставить в config/main.cfg объём памяти видеоадаптера = 2048 Мб и запретить VideoMemoryStartupDetect, как вылеты полностью прекратились.
Code // memory settings VideoMemorySize 2048 // video card onboard memory (VRAM) in megabytes VideoMemoryMaxPercent 85 // max VRAM consumption (percents) VideoMemoryStartupDetect false // use auto detection of VRAM size on startup, otherwise use VideoMemorySize value VideoMemoryDynamicDetect true // use auto detection of available amount of VRAM in runtime По всей видимости связано это с тем, что после данных манипуляций SpaceEngine использует уже ~ 2 Гб ОЗУ. Следовательно - "узким местом" приводящим к вылетам является то, что SpaceEngine использует объём ОЗУ равный объёму памяти видеоадаптера, а этого явно недостаточно.
Рассмотрим частный случай. Если пользователь владеет видеоадаптером с объёмом памяти 2048 Мб, то ему уже будет необходимо выставить в config/main.cfg объём памяти видеоадаптера = 3-4 Гб, для возможности использования такого же объёма ОЗУ.
Но SpaceEngine изначально не поддерживает объём ОЗУ свыше 2 Гб. Следовательно, будет необходимо пропатчить исполняемый файл SpaceEngine.exe с помощью этой программы, для поддержки ключа LARGE_ADDRESS_AWARE (can handle >2Gb Addresses).
Но работает этот ключ только в 64-разрядных ОС!!!
Сообщение отредактировал IvGrad - Воскресенье, 15.07.2012, 16:57 |
|
| |
Crab | Дата: Воскресенье, 15.07.2012, 17:36 | Сообщение # 9 |
Первооткрыватель
Группа: Модераторы
Российская Федерация
Сообщений: 444
Награды: 1
Статус: Offline
| Я думаю что если у тебя 2048 МБ видеопамяти, то тебе не потребуется выставлять больший объем. Так как это вызовет лаги.
Windows 8 x64 Intel Core2 Duo CPU E7500 2.93GHz. 4 GB RAM. Nvidia GeForce 550Ti 1024mb.
|
|
| |
IvGrad | Дата: Воскресенье, 15.07.2012, 19:37 | Сообщение # 10 |
Космический пилот
Группа: Пользователи
Российская Федерация
Сообщений: 126
Награды: 1
Статус: Offline
| Crab
У меня, к сожалению, только 1024 МБ видеопамяти. Но в качестве эксперимента я сделал следующее:
1) Добавил в SpaceEngine.exe ключ LARGE_ADDRESS_AWARE (для поддержки свыше 2 Гб ОЗУ)
2) Выставил в config/main.cfg следующие значения:
Code // memory settings VideoMemorySize 3072 // video card onboard memory (VRAM) in megabytes VideoMemoryMaxPercent 85 // max VRAM consumption (percents) VideoMemoryStartupDetect false // use auto detection of VRAM size on startup, otherwise use VideoMemorySize value VideoMemoryDynamicDetect true // use auto detection of available amount of VRAM in runtime
// loading settings StartupPreloading false // preload some shaders, textures, models on startup 3) Запустил SpaceEngine и нагрузил по полной
В итоге, как и предполагалось, SpaceEngine и ОС "скушали" практически все мои 4 Гб ОЗУ. Лагов и вылетов не наблюдалось
Так что экспериментально была доказана возможность использования SpaceEngine свыше 2 Гб ОЗУ
Вопрос в другом. Существует ли необходимость использования увеличенного объёма ОЗУ для 2 Гб видеокарт? Ибо при таком объёме видеопамяти вылеты могут и не наблюдаться.
|
|
| |
GatesofAmalgam | Дата: Понедельник, 16.07.2012, 21:35 | Сообщение # 11 |
Исследователь
Группа: Пользователи
Российская Федерация
Сообщений: 158
Награды: 0
Статус: Offline
| Тоже пропятчил на LAA, отключил автоопределение объёма памяти, выставил 3096мб свободных и до 95%. Стало заметно лучше! Однако все равно вылетает если подобраться близко к поверхности, но не сразу как то. Вроде незадолго перед вылетом SE начинает грузить какие-то меши пачками. Уведомление о подгрузке не исчезает, только с огромной скоростью меняется. Вскоре после этого происходит вылет.
i5 2500k@4.0ггц - 24гб RAM - GTX 570, 1280мб - SSD 240гб Intel 520 - Win7x64
Сообщение отредактировал GatesofAmalgam - Понедельник, 16.07.2012, 21:36 |
|
| |
IvGrad | Дата: Вторник, 17.07.2012, 00:19 | Сообщение # 12 |
Космический пилот
Группа: Пользователи
Российская Федерация
Сообщений: 126
Награды: 1
Статус: Offline
| GatesofAmalgam
95% - это слишком много!!! Оставьте 85%, ибо Aero "съедает" ~ 13% видеопамяти. Оставьте включённым параметр "VideoMemoryDynamicDetect", отключите параметры "VideoMemoryStartupDetect" и "StartupPreloading". Замените "3096" на "2048".
После данных манипуляций вылеты должны прекратиться.
Сообщение отредактировал IvGrad - Вторник, 17.07.2012, 00:25 |
|
| |
GatesofAmalgam | Дата: Вторник, 17.07.2012, 00:33 | Сообщение # 13 |
Исследователь
Группа: Пользователи
Российская Федерация
Сообщений: 158
Награды: 0
Статус: Offline
| Не уверен что при таких настройках максимального объема видеопамяти имеет смысл ставить 85%. Однако попробую.
"Аэро съедает 13% видеопамяти" - звучит странно. Это что ж, занимаемая Аэро память зависит от максимального объема видеопамяти?
Завтра попробую поглядеть сколько SE кушает перед очередным пришествием рабочего стола.
i5 2500k@4.0ггц - 24гб RAM - GTX 570, 1280мб - SSD 240гб Intel 520 - Win7x64
|
|
| |
IvGrad | Дата: Вторник, 17.07.2012, 00:50 | Сообщение # 14 |
Космический пилот
Группа: Пользователи
Российская Федерация
Сообщений: 126
Награды: 1
Статус: Offline
| GatesofAmalgam
1) У меня 1 Гб видеокарта и Aero потребляет ~ 13% видеопамяти, сколько у Вас - посмотрите сами в GPU-Z. 2) "VideoMemoryDynamicDetect" остаётся включённым, поэтому % использования имеет значение. 3) Выставление объёма видеопамяти вручную преследует цель увеличить доступный объём ОЗУ.
Экспериментируйте. У меня лично вылетов больше не наблюдается. Как доказательство в предыдущем сообщении привёл скрины ландшафта генерированного при LOD=2. Раньше при таком значении LOD на процедурных планетах - SpaceEngine вылетал.
|
|
| |
GatesofAmalgam | Дата: Вторник, 17.07.2012, 01:19 | Сообщение # 15 |
Исследователь
Группа: Пользователи
Российская Федерация
Сообщений: 158
Награды: 0
Статус: Offline
| По логике вещей получается: Мы ставим 2гб видеопамяти, то есть в любом случае SE будет пытаться потреблять больше чем есть физически. Я понимаю так, будет гонять часть через PCI-E(для чего она, собственно, и была создана). В чем же тогда смысл VideoMemoryMaxPercent при такой конфигурации SE? Мы ставим два гига видео, от них -15%, получаем что SE может сожрать 1700мб, то есть все равно больше чем видеопамять, и Аэро, для которого мы "оставляем 15%" все равно "не поместится" в физическую память. Тогда смысл ставить эти 85? Или VideoMemoryMaxPercent все таки определяет максимальный процент занимаемый SE в физической видеопамяти? Или от свободного объема в физической памяти? Тогда надо бы эти настройки как-то переименовать что ли. А то там везде фигурирует VideoMemory, но, в разных настройках оно, получается, обозначает разные понятия.
Непонятно тут как-то все. Надо чтобы уважаемый SpaceEngineer разъяснил.
i5 2500k@4.0ггц - 24гб RAM - GTX 570, 1280мб - SSD 240гб Intel 520 - Win7x64
Сообщение отредактировал GatesofAmalgam - Вторник, 17.07.2012, 01:39 |
|
| |