Причины вылетов игры (разбираем логи) — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Причины вылетов игры (разбираем логи) — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
(Вылет Can't find variable - сделал общее описание, а не только конкретного случая)
(Добавлено новое определение вылета.)
Строка 256: Строка 256:
 
</pre>
 
</pre>
 
На мультиплеерной карте не найдены точки респавна игроков.
 
На мультиплеерной карте не найдены точки респавна игроков.
 +
--------------
 +
 +
--------------
 +
Expression    : fatal error
 +
Function      : xrServer::Process_update
 +
File          : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_process_update.cpp
 +
Line          : 37
 +
Description  : <no expression>
 +
Arguments    : Beer from the creator of 'WP_SHOTG'
 +
 +
Такое иногда бывает, когда ты (ГГ) или НПС заряжает дробовик или другое оружие со значением tri_state_reload = true.
 +
Это глюк. в игре что-то сбивается, и когда у дробовика максимальное количество заряженых патронов скажем 6, он заряжается за 6 и дальше.. дальше.. дальше.. и так пока не произойдёт вылет с вышеуказанным логом.
 
--------------------------------------------------------------------------------------
 
--------------------------------------------------------------------------------------
 
Небольшой пример из практики по определению ошибки в особых случаях(для начинающих):
 
Небольшой пример из практики по определению ошибки в особых случаях(для начинающих):

Версия 08:00, 15 мая 2011

Привет всем! Игра сталкер, а конкретно сам движок X-ray довольно капризный, и зачастую как в процессе модификации, так и во время игры игра «вылетает». Чтобы мы знали причину вылета, движок нам оставляет лог вылета. Лог вылета можно посмотреть несколькими способами:

  • В текстовом редакторе нажать Ctrl+V (Вставить)
  • Посмотреть лог игры включая лог вылета в файле xray_имя_пользователя.log в папке C:\Documents and Settings\All Users\Документы\STALKER-***\logs
  • Посмотреть непосредственно в окне багтрекера (только в ЧН и ЗП).

Ну приступим. Начнём с простых:


Expression    : wave&&wave->length()
Function      : CSoundRender_Source::LoadWave
File          : E:\stalker\patch_1_0004\xrSound\SoundRender_Source_loader.cpp
Line          : 65
Description   : Can't open wave file:
Arguments     : d:\stalker\gamedata\sounds\music\sound.ogg

Здесь игра не может открыть звуковой OGG-файл под названием sound в папке d:\stalker\gamedata\sounds\music\


Expression    : fatal error
Function      : CRender::texture_load
File          : E:\stalker\patch_1_0004\xr_3da\xrRender\Texture.cpp
Line          : 295
Description   : <no expression>
Arguments     : Can't find texture 'act\act_corp_monolit'

Не может найти текстуру act_corp_monolit из папки textures\act


Expression    : fatal error
Function      : CModelPool::Instance_Load
File          : E:\stalker\patch_1_0004\xr_3da\xrRender\ModelPool.cpp
Line          : 111
Description   : <no expression>
Arguments     : Can't find model file 'physics\mesh.ogf'.

Не найдена трёхмерная OGF-модель mesh.ogf из папки meshes\physics.


Expression    : SG
Function      : CRender::model_CreateParticles
File          : E:\stalker\patch_1_0004\xr_3da\xrRender_R2\r2.cpp
Line          : 330
Description   : Particle effect or group doesn't exist
Arguments     : hit_fx\hit_water_00

Не найдена система частиц (партикл) hit_water_00 в директории hit_fx файла particles.xr (подробно опишу позже).


Expression    : fatal error
Function      : CResourceManager::_GetBlender
File          : E:\stalker\patch_1_0004\xr_3da\ResourceManager.cpp
Line          : 49
Description   : <no expression>
Arguments     : Shader 'models\antigas_glass' not found in library.

Не найден шейдер models\antigas_glass в библиотеке шейдеров.


Expression    : fs
Function      : CResourceManager::_CreateVS
File          : E:\stalker\patch_1_0004\xr_3da\ResourceManager_Resources.cpp
Line          : 185
Description   : shader file doesnt exist
Arguments     : d:\stalker\gamedata\shaders\r2\deffer_impl_flat.vs

Не найден файл шейдера deffer_impl_flat.vs. --Added by Герр. Роммель Да нет. Тут проблема вся в том, что неправильно закомпилился шейдер, при компиляции уровня на качестве, более высоком чем Draft. Нужно скачивать исправление шейдеров от товарища Haron. Для ЗП (ЧН) это может ещё быть из-за отсутствия thm"ок для текстур терраина уровня!


Expression : fatal error
Function : out_of_memory_handler
File : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp
Line : 336
Description : <no expression>
Arguments : Out of memory. Memory request: 55965 K 

Нехватка оперативной памяти.


Expression : fatal error
Function : CInifile::r_string
File :E:\stalker\sources\trunk\xrCore\Xr_ini.cpp
Line : 352
Description : <no expression>
Arguments : Can't find variable ammo_mag_size in [wpn_addon_grenade_launcher]

Не найдена переменная ammo_mag_size в секции [wpn_addon_grenade_launcher].


Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : D:\xray-svn\xr_3da\xrGame\script_engine.cpp
Line          : 74
Description   : <no expression>
Arguments     : LUA error: C stack overflow

Переполнение стека. Смотрим внимательно: lua_error. Ошибка возможно в скриптах.


Expression : vertex || show_restrictions(m_object)
Function : CPatrolPathManager::select_point
File : E:\stalker\sources\trunk\xr_3da\xrGame\patrol_path_manager.cpp
Line : 155
Description : any vertex in patrol path [sniper_3_walk] in inaccessible for object [stalker_0002]

Какая то вершина (вейпоинт) пути sniper_3_walk стоит в неположенном месте (например не на аи-сетке). Объект stalker_0002 (в данном случае сталкер) который якобы двигался по пути sniper_3_walk попал на эту точку, а заодно ушёл за аи-сетку. Этого движок не терпит.

Тоже самое произойдет если координаты(вейпоинт) пути sniper_3_walk совпадет с координатами места где нпс запрешенно находится буть то рестриктор или аномалия в схеме обхода аномалий. Также этот вылет набюдается при попытке отправить нпс за пределы места работ параметр out_rest = "имя_рестриктора", в файле загрузки работ гулага

попробуйте любого сталкера из лагеря новичков отправить допустим к остановке получите этот самый вылет


Expression : e_entity
Function : xrServer::Process_event_reject
File : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_process_event_reject.cpp
Line : 12
Description : entity not found. id_parent=7540 id_entity=44047 frame=2075050

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


Expression : fatal error
Function : CScriptEngine::lua_error
File : D:\xray-svn\xr_3da\xrGame\script_engine.cpp
Line : 74
Description : <no expression>
Arguments : LUA error: e:\stalker\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)

Ошибка распространённая. На первый взгляд кажется, что ошибка как раз в скриптах, но всё может быть иначе. Делаем так: открываем файл _g.script блокнотом, закоменчиваем 20 строку (ставим перед строкой --) и идём к тому месту где поймали вылет. Так мы получим более развёрнутый ответ.


Expression    : assertion failed
Function      : _VertexStream::Lock
File          : E:\stalker\patch_1_0004\xr_3da\R_DStreams.cpp
Line          : 44
Description   : (bytes_need<=mSize) && vl_Count

Проблема возникает при убийстве НПС\мутанта. Типичный вылет по нехватке ресурсов. Встречается в основном на больший локациях.


Expression    : fatal error
Function      : IRender_Visual::Load
File          : E:\stalker\patch_1_0004\xr_3da\FBasicVisual.cpp
Line          : 58
Description   : <no expression>
Arguments     : Invalid visual

Неправильный визуал (модель) НПС.


Expression    : !phrase_dialog->m_PhraseVector.empty()
Function      : CPhraseDialog::SayPhrase
File          : E:\stalker\patch_1_0004\xr_3da\xrGame\PhraseDialog.cpp
Line          : 140
Description   : No available phrase to say, dialog[esc_dialog]

В диалоге esc_dialog нет доступной для отображения фразы (скажем все заткнуты инфопоршенами).


Expression    : motion_ID.valid()
Function      : CKinematicsAnimated::ID_Cycle
File          : D:\prog_repository\sources\trunk\Layers\xrRender\SkeletonAnimated.cpp
Line          : 210
Description   : ! MODEL: can't find cycle:
Arguments     : death_init

Игра не нашла в модели трёхмерную анимацию с именем death_init.



  • Автор статьи — Pihan13
  • Дополнил статью — Fireman3000
  • Частично использовалась информация с сайта http://forum.stalker-simbion.ru/
Не стесняемся — дополняем, если знаем о чём идёт речь.

Дополнение к статье(От Fireman3000): Извините если где нибудь я неправильно пишу. Уж не родился я Колмогором :(


Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...hadow of chernobyl\gamedata\scripts\xr_danger.script:116: attempt to index field 'ignore_types' (a nil value)

Причина вылета в том что игра не понимает значения 0 в danger_ignore.Проще говоря в логике какого то персонажа параметр danger_ignore = 0 либо в минусовом значении. Либо его вообще нету



Expression    : fatal error
Function      : CInifile::r_string
File          : E:\stalker\patch_1_0004\xrCore\Xr_ini.cpp
Line          : 352
Description   : <no expression>
Arguments     : Can't find variable class in [test_no_klass_npc]

Не найден класс персонажа. Возможно, нпс не прописан под своим классом в gamedata\npc_profile.xml, либо в creatures\spawn_section.ltx, либо в gameplay\character_desc.xml



Expression    : fatal error
Function      : CInifile::r_section
File          : E:\stalker\patch_1_0004\xrCore\Xr_ini.cpp
Line          : 342
Description   : <no expression>
Arguments     : Can't open section 'bandage_test_kick1'

Игра не может найти секцию. Это может быть предмет, нпс и многое другое. Возможно, вы написали название с ошибками. Либо когда добавляли его в: продажу, скрипт, нпс, выпадение из нпс а в редких случиях это может быть иммунитет чего либо(определить пото трудно). Часто такое бывает связано с названием



Expression    : fatal error
Function      : CInifile::r_string
File          : E:\stalker\patch_1_0004\xrCore\Xr_ini.cpp
Line          : 352
Description   : <no expression>
Arguments     : Can't find variable remove_time in [vehicle_btr]

Не найдена переменная remove_time в секции [vehicle_btr]. А в данном случае ошибка в том что если вы делали предмет как физическую модель(тобишь которую нельзя использовать, говорить и вообще он похож на декорации типа деревьев, столов и прочего хлама) то необходимо указывать remove_time в его секции



Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...dow of chernobyl\gamedata\scripts\test_kick.script:34: attempt to call method 'section' (a nil value)

Метод обращения в игре не предусмотрен. Возможно, стоит пересмотреть подход к тому или иному скрипту



Expression    : rpoints[0].size()
Function      : game_sv_Deathmatch::Create
File          : D:\prog_repository\sources\trunk\xrGame\game_sv_deathmatch.cpp
Line          : 99
Description   : rpoints for players not found

На мультиплеерной карте не найдены точки респавна игроков.



Expression  : fatal error Function  : xrServer::Process_update File  : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_process_update.cpp Line  : 37 Description  : <no expression> Arguments  : Beer from the creator of 'WP_SHOTG'

Такое иногда бывает, когда ты (ГГ) или НПС заряжает дробовик или другое оружие со значением tri_state_reload = true. Это глюк. в игре что-то сбивается, и когда у дробовика максимальное количество заряженых патронов скажем 6, он заряжается за 6 и дальше.. дальше.. дальше.. и так пока не произойдёт вылет с вышеуказанным логом.


Небольшой пример из практики по определению ошибки в особых случаях(для начинающих): Игра зависла, картинка на экране не меняется, на Ctrl + Alt+ Delete не реагирует. Только "Холодная перезагрузка" reset. Но при этом обычно в логе нет записи и обычным Ctrl + V ошибку не увидеть. Я пользуюсь программой Punto Switcher. Есть в ней опция "дневник", она ведёт запись всех нажатий клавиш и по нажатию сочетаний клавиш содержимое памяти может записывать в дневник. теперь когда игра зависла и картинка на экране не меняется, нажимаете Ctrl + Alt+ Delete. Внешне ничего не изменится, но ОС будет реагировать на клавиши, нажимаете сочетание клавишь "записать в дневник". Делаете перезагрузку, открываете дневник - Ваша ошибка записана. "дядя Саша"


Другие места
LANGUAGE