Редактирование: Типичные ошибки и методы их устранения

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
Для поиска по страничке используйте '''Ctrl+F'''
+
Для поиска по страничке используйте Ctrl+F
  
 
==xrAI==
 
==xrAI==
<syntaxhighlight lang="text">[error]Expression    : tpGraphs.size()
+
<syntaxhighlight lang="text">[error]Expression    : F
[error]Function      : CGraphMerger::CGraphMerger
+
[error]Function      : xrLoad
[error]File          : X:\xray\utils\xrAI\xr_graph_merge.cpp
+
[error]File          : .\compiler_load.cpp
[error]Line          : 599
+
[error]Line          : 272
[error]Description  : empty [levels] section in configs!</syntaxhighlight>
+
[error]Description  : x:\gamedata\levels\escape\build.aimap</syntaxhighlight>
Секция уровня не добавлена в game_levels.ltx
+
В папке с уровнем gamedata\level\escape отсутствует build.aimap
----
+
Нужно экспортировать ИИ-карту из LevelEditor: Compile->Make AI Map
<syntaxhighlight lang="text">! AI-node [87.500, 9.188, 160.300] not connected to AI-map
 
 
FATAL ERROR
 
 
[error]Expression    : error_nodes.empty()
 
[error]Function      : CGameGraphBuilder::check_fill
 
[error]File          : X:\xray\utils\xrAI\game_graph_builder.cpp
 
[error]Line          : 273
 
[error]Description  : Some ai-node is not connected to AI-map. See log for details.</syntaxhighlight>
 
Причин такой ошибки может быть две: одна явная, другая неочевидная.
 
Явная – если в логе вы видите нижнюю секцию с текстом про <code>Some ai-node is not connected to AI-map</code>. Значит, одна (или множество) нод не соединены с остальной ИИ-сеткой. Не допускайте создания отдельных островков нод, всегда соединяйте их с основной ИИ-сеткой, и удаляйте отдельно стоящие и вырожденные ноды (в ЛЕ выделяются красным) нажатием кнопки Select 0-Link на панели AI Map и клавиши Delete на клавиатуре.<br />
 
Если же в логе тьма-тьмущая строк вида <code>! AI-node [-216.650, -0.023, 198.450] not connected to AI-map</code>, а в конце нет внятного сообщения об ошибке, лишь какой-то мутный стектрейс, то скорее всего, компилятор рухнул, воспринимая каждую ноду ИИ-карты как несвязную, и не успел дойти до стадии загрузки точек графа. Нужно проверить, есть ли на уровне точки графа, если нет, то добавить и переэкспортировать спаун.
 
 
----
 
----
 
<syntaxhighlight lang="text">[error]Expression    : assertion failed
 
<syntaxhighlight lang="text">[error]Expression    : assertion failed
Строка 28: Строка 16:
 
[error]Description  : graph().header().vertex_count() > tCrossTableCell.tGraphIndex</syntaxhighlight>
 
[error]Description  : graph().header().vertex_count() > tCrossTableCell.tGraphIndex</syntaxhighlight>
 
На карте отсутствуют точки графа. Нужно добавить хотя бы одну: Spawn Element -> AI\graph point и экспортировать level.game: Compile -> Make Game
 
На карте отсутствуют точки графа. Нужно добавить хотя бы одну: Spawn Element -> AI\graph point и экспортировать level.game: Compile -> Make Game
----
 
<syntaxhighlight lang="text">[error]Expression    : F
 
[error]Function      : xrLoad
 
[error]File          : .\compiler_load.cpp
 
[error]Line          : 272
 
[error]Description  : x:\gamedata\levels\escape\build.aimap</syntaxhighlight>
 
В папке с уровнем gamedata\level\escape отсутствует build.aimap<br />
 
Нужно экспортировать ИИ-карту из LevelEditor: Compile->Make AI Map
 
 
----
 
----
 
<syntaxhighlight lang="text">! Cannot build GAME path! (object esc_tutorial_wounded0826)
 
<syntaxhighlight lang="text">! Cannot build GAME path! (object esc_tutorial_wounded0826)
Строка 76: Строка 56:
 
== Красные строки в логе ==
 
== Красные строки в логе ==
 
<syntaxhighlight lang="text">! level_path().failed() during navigation</syntaxhighlight>
 
<syntaxhighlight lang="text">! level_path().failed() during navigation</syntaxhighlight>
Путь непися пролегает через пространство, где неадекватно соединены ноды ИИ-сетки. Нужно правильно соединить ноды.
+
Путь непися пролегает через область без нод ИИ-сетки. Нужно либо добавить ноды в пустое пространство, либо изменить путь так, чтобы он проходил в обход этой области.
  
 
==Редакторы==
 
==Редакторы==
Строка 84: Строка 64:
 
Line          : 276
 
Line          : 276
 
Description  : (Pos<=Size) && (Pos>=0)</syntaxhighlight>
 
Description  : (Pos<=Size) && (Pos>=0)</syntaxhighlight>
Такой вылет был, когда в папке с СДК оказался левый .xdb-архив и движок попытался автоматически его прочитать.
+
Такой вылет был, когда в папке с СДК оказался левый .xdb-архив.
  
==Actor Editor==
+
==Игра==
<syntaxhighlight lang="text">!Can't load: 'characters\stalker_smart_cover_animation.omf' invalid bones count
+
<syntaxhighlight lang="text">[error]Expression    : false
!Can't find bone: 'bip01'
+
[error]Function      : CXml::Load
!Can't find bone: 'root_stalker'
+
[error]File          : xrXMLParser.cpp
!Can't load: 'characters\stalker_smart_cover_animation.omf' invalid bones count
+
[error]Line          : 87
!Different bone count[characters\stalker_smart_cover_animation.omf] [Object: '45' <-> Motions: '47']
+
[error]Description  : XML file:text\rus\st_quests_escape.xml value: errDescr:Error reading end tag.</syntaxhighlight>
! error in model [x:\rawdata\objects\actors\stalker_bandits\stalker_bandit_4]. Unable to load motion file 'characters\stalker_smart_cover_animation.omf'.
+
В указанном файле ошибка синтаксиса: где-то не закрыт тег.
+
----
FATAL ERROR
+
<syntaxhighlight lang="text">Expression    : m_attack_animation.valid()
+
Function      : CVisualZone::net_Spawn
[error]Expression    : assertion failed
+
File          : E:\priquel\sources\engine\xrGame\ZoneVisual.cpp
[error]Function      : ..\..\Layers\xrRender\SkeletonAnimated.cpp
+
Line          : 34
[error]File         : ..\..\Layers\xrRender\SkeletonAnimated.cpp
+
Description  : object[esc_burning_fluff_strong]: cannot find attack animation[] in model[dynamics\anomalies\burning_fluff_01]</syntaxhighlight>
[error]Line          : 732
+
На карте присутствует динамическая модель, у которой предусмотрена, но не задана анимация атаки. Нужно задать её в LevelEditor'е в свойствах спаун-объекта в поле Attack animation.
[error]Description  : m_Motions.size()</syntaxhighlight>
+
----
В модель из ТЧ (45 костей) были подключены .omf из ЧН/ЗП (47 костей). Редактор ругается на несоответствие скелета модели анимациям, сделанным под другой скелет.
+
<syntaxhighlight lang="text">[error]Expression    : motion_ID.valid()
 +
[error]Function      : CKinematicsAnimated::ID_Cycle
 +
[error]File          : ..\xrRender\SkeletonAnimated.cpp
 +
[error]Line         : 208
 +
[error]Description  : ! MODEL: can't find cycle:
 +
[error]Arguments    : death_init</syntaxhighlight>
 +
Не найдена анимация с именем '''death_init'''. Возможно, к модели не подключен нужный .omf
 +
----
 +
<syntaxhighlight lang="text">[error]Expression    : BI_NONE!=f_bones.back()
 +
[error]Function      : P_build_Shell
 +
[error]File          : C:\projects\xray15\xray\xrGame\PhysicsShell.cpp
 +
[error]Line          : 136
 +
[error]Description  : wrong fixed bone</syntaxhighlight>
 +
Имя кости, используемой для фиксации модели, отличается от указанного в соответствующем поле LE. Например, в модели кость носит имя '''link1''', а для физического объекта в редакторе уровней было указано имя '''link'''.
 +
----
 +
<syntaxhighlight lang="text">Expression    : fs
 +
Function      : CResourceManager::_CreateVS
 +
File          : E:\priquel\sources\engine\Layers\xrRender\ResourceManager_Resources.cpp
 +
Line          : 203
 +
Description  : shader file doesnt exist
 +
Arguments    : x:\gamedata\shaders\r2\deffer_impl_lmh_bump-hq.vs
  
==Игра==
+
Expression    : R
 +
Function      : CResourceManager::_CreatePS
 +
File          : E:\priquel\sources\engine\Layers\xrRender\ResourceManager_Resources.cpp
 +
Line          : 309
 +
Description  : x:\gamedata\shaders\r2\deffer_impl_lmh_bump.ps</syntaxhighlight>
 +
Конкретно эти ошибки вылезают в ЧН при попытке запуска на втором рендере, если геометрия уровня скомпилирована на низких настройках.
 +
Чтобы игра не валилась, нужно подсунуть [https://files.xray-engine.org/shaders/r2_deffer_impl_lmh_pseudofix.7z те файлы, что она хочет]. Доподлинно неизвестно, что должно было быть в этих шейдерах, так что по ссылке .ps/.vs с обычными инклюдами внутри.
 +
----
 
<syntaxhighlight lang="text">
 
<syntaxhighlight lang="text">
 
[error]Expression    : fatal error
 
[error]Expression    : fatal error
Строка 112: Строка 119:
 
[error]Arguments    : LUA error: x:\gamedata\scripts\_g.script:973: bad argument #2 to 'format' (string expected, got nil)</syntaxhighlight>
 
[error]Arguments    : LUA error: x:\gamedata\scripts\_g.script:973: bad argument #2 to 'format' (string expected, got nil)</syntaxhighlight>
 
Самый мерзкий и жопошный вылет, который указывает только на то, что игра вылетела, но не на причину креша. Возникает потому, что в релизной версии игры разрабы отрубили команды log и assert. В качестве костыля можно использовать такие решения: [http://www.gameru.net/forum/index.php?s=&showtopic=67052&view=findpost&p=1607546], [http://www.gameru.net/forum/index.php?s=&showtopic=67052&view=findpost&p=1607620]
 
Самый мерзкий и жопошный вылет, который указывает только на то, что игра вылетела, но не на причину креша. Возникает потому, что в релизной версии игры разрабы отрубили команды log и assert. В качестве костыля можно использовать такие решения: [http://www.gameru.net/forum/index.php?s=&showtopic=67052&view=findpost&p=1607546], [http://www.gameru.net/forum/index.php?s=&showtopic=67052&view=findpost&p=1607620]
----
 
<syntaxhighlight lang="text">[error]Expression    : false
 
[error]Function      : CXml::Load
 
[error]File          : xrXMLParser.cpp
 
[error]Line          : 87
 
[error]Description  : XML file:text\rus\st_quests_escape.xml value: errDescr:Error reading end tag.</syntaxhighlight>
 
В указанном файле ошибка синтаксиса: где-то не закрыт тег.
 
 
----
 
----
 
<syntaxhighlight lang="text">[error]Expression    : !save_guid || (*save_guid == header().guid()) || ignore_save_incompatibility()
 
<syntaxhighlight lang="text">[error]Expression    : !save_guid || (*save_guid == header().guid()) || ignore_save_incompatibility()
Строка 142: Строка 142:
 
Arguments : Out of memory. Memory request: 3506347 K</syntaxhighlight>
 
Arguments : Out of memory. Memory request: 3506347 K</syntaxhighlight>
 
Движок пытается прочесть какой-то левый архив или просто файл с расширением сталкирского архива (*.db, *.xdb). Подробности [http://www.gameru.net/forum/index.php?s=&showtopic=67034&view=findpost&p=1608736 тут]
 
Движок пытается прочесть какой-то левый архив или просто файл с расширением сталкирского архива (*.db, *.xdb). Подробности [http://www.gameru.net/forum/index.php?s=&showtopic=67034&view=findpost&p=1608736 тут]
 
==Геометрия уровней==
 
Вылет на этапе загрузки шейдеров при попытке запуска уровня на r1:
 
<syntaxhighlight lang="text">Expression    : fatal error
 
Function      : CBlender_default::Compile
 
File          : X:\xray\Layers\xrRenderPC_R1\BlenderDefault.cpp
 
Line          : 50
 
Description  : <no expression>
 
Arguments    : Not enought textures for shader, base tex: floor\floor_dirty_gr_02</syntaxhighlight>
 
Вызван некорректными настройками .thm соответствующей текстуры – у неё установлен флаг Implicit Lighted, то есть лайтмапы для неё считаются как для террейна. Из-за этого же в папке с уровнем появилась папка floor, в которую скопировалась эта текстура. А крашится потому, что у террейна один лайтмап, а не два, как у шейдера default.
 
<br />
 
Без перекомпиляции уровня исправить это можно с помощью [[level. compiler/decompiler (level. cdc) | распаковщика файла .level]]. Для этого распаковать файл .level из папки с уровнем, найти в FSL_SHADERS.ltx секцию вида
 
<syntaxhighlight lang="ini">[58]
 
shader = default
 
textures = floor\floor_dirty_gr_02,floor\floor_dirty_gr_02_lm</syntaxhighlight>
 
и сменить в ней шейдер c лайтмапного default на вершинный def_vertex, а лайтмапную текстуру (_lm) вовсе убрать. Получится так:
 
<syntaxhighlight lang="ini">[58]
 
shader = def_shaders\def_vertex
 
textures = floor\floor_dirty_gr_02</syntaxhighlight>
 
Запаковать файл, переименовать в .level и скопировать с заменой в папку с уровнем.
 
----
 
<syntaxhighlight lang="text">Expression    : fs
 
Function      : CResourceManager::_CreateVS
 
File          : E:\priquel\sources\engine\Layers\xrRender\ResourceManager_Resources.cpp
 
Line          : 203
 
Description  : shader file doesnt exist
 
Arguments    : x:\gamedata\shaders\r2\deffer_impl_lmh_bump-hq.vs
 
 
Expression    : R
 
Function      : CResourceManager::_CreatePS
 
File          : E:\priquel\sources\engine\Layers\xrRender\ResourceManager_Resources.cpp
 
Line          : 309
 
Description  : x:\gamedata\shaders\r2\deffer_impl_lmh_bump.ps</syntaxhighlight>
 
Конкретно эти ошибки вылезают в ЧН при попытке запуска на втором рендере, если геометрия уровня скомпилирована на низких настройках.
 
Чтобы игра не валилась, нужно подсунуть [https://files.xray-engine.org/shaders/r2_deffer_impl_lmh_pseudofix.7z те файлы, что она хочет]. Доподлинно неизвестно, что должно было быть в этих шейдерах, так что по ссылке .ps/.vs с обычными инклюдами внутри.
 
 
== Динамические модели ==
 
<syntaxhighlight lang="text">Expression    : m_attack_animation.valid()
 
Function      : CVisualZone::net_Spawn
 
File          : E:\priquel\sources\engine\xrGame\ZoneVisual.cpp
 
Line          : 34
 
Description  : object[esc_burning_fluff_strong]: cannot find attack animation[] in model[dynamics\anomalies\burning_fluff_01]</syntaxhighlight>
 
На карте присутствует динамическая модель, у которой предусмотрена, но не задана анимация атаки. Нужно задать её в LevelEditor'е в свойствах спаун-объекта в поле Attack animation.
 
----
 
<syntaxhighlight lang="text">[error]Expression    : motion_ID.valid()
 
[error]Function      : CKinematicsAnimated::ID_Cycle
 
[error]File          : ..\xrRender\SkeletonAnimated.cpp
 
[error]Line          : 208
 
[error]Description  : ! MODEL: can't find cycle:
 
[error]Arguments    : death_init</syntaxhighlight>
 
Не найдена анимация с именем '''death_init'''. Возможно, к модели не подключен нужный .omf
 
----
 
<syntaxhighlight lang="text">[error]Expression    : BI_NONE!=f_bones.back()
 
[error]Function      : P_build_Shell
 
[error]File          : C:\projects\xray15\xray\xrGame\PhysicsShell.cpp
 
[error]Line          : 136
 
[error]Description  : wrong fixed bone</syntaxhighlight>
 
Имя кости, используемой для фиксации модели, отличается от указанного в соответствующем поле LE. Например, в модели кость носит имя '''link1''', а для физического объекта в редакторе уровней было указано имя '''link'''.
 
----
 
<syntaxhighlight lang="text">[error]Expression    : fatal error
 
[error]Function      : CScriptEngine::lua_pcall_failed
 
[error]File          : C:\projects\xray15\xray\xrServerEntities\script_engine.cpp
 
[error]Line          : 192
 
[error]Description  : <no expression>
 
[error]Arguments    : LUA error: x:\gamedata\scripts\ph_door.script:36: attempt to index field 'joint' (a nil value)</syntaxhighlight>
 
Ошибка возникла, когда в модели двери все кости имели тип rigid. Но для двери или ворот хотя бы одна кость должна иметь тип joint, чтобы дверь могла открываться.
 
  
 
== Симуляция ==
 
== Симуляция ==
Строка 219: Строка 153:
 
----
 
----
 
<syntaxhighlight lang="ini">! [LUA][ERROR] ERROR: Insufficient smart_terrain jobs test_smartterrain</syntaxhighlight>
 
<syntaxhighlight lang="ini">! [LUA][ERROR] ERROR: Insufficient smart_terrain jobs test_smartterrain</syntaxhighlight>
В лагере трётся слишком много народу. Нужно либо уменьшить количество групп ('''faction_*.ltx'''), либо уменьшить количество персонажей в группе ('''squad_descr_*.ltx'''), либо (что правильнее) создать в смарте дополнительные работы, чтобы бездельники смогли их занять.
+
В лагере трётся слишком много народу. Нужно либо уменьшить количество групп ('''faction_*.ltx'''), либо уменьшить количество персонажей в группе ('''squad_descr_*.ltx'''), либо (что правильнее)создать в смарте дополнительные работы, чтобы бездельники смогли их занять.
 
----
 
----
 
<syntaxhighlight lang="text">[error]Expression    : vertex || show_restrictions(m_object)
 
<syntaxhighlight lang="text">[error]Expression    : vertex || show_restrictions(m_object)
Строка 247: Строка 181:
 
[error]Description  : <no expression>
 
[error]Description  : <no expression>
 
[error]Arguments    : LUA error: x:\gamedata\scripts\sim_faction_brain_mutant.script:90: attempt to index field '?' (a nil value)</syntaxhighlight>Такая ошибка вылезла, когда на карту был добавлен спейсрестриктор без каких-либо настроек.
 
[error]Arguments    : LUA error: x:\gamedata\scripts\sim_faction_brain_mutant.script:90: attempt to index field '?' (a nil value)</syntaxhighlight>Такая ошибка вылезла, когда на карту был добавлен спейсрестриктор без каких-либо настроек.
----
 
<syntaxhighlight lang="text">[error]Expression    : level_graph->valid_vertex_id(m_level_vertex_id)
 
[error]Function      : CPatrolPoint::verify_vertex_id
 
[error]File          : C:\xray\xrGame\patrol_point.cpp
 
[error]Line          : 46
 
 
! Patrol point wp00 in path esc_atp_st_guard_4_walk is not on the level graph vertex!
 
</syntaxhighlight>Точка пути находится не на ИИ-сетке. Необходимо либо подвинуть точку, либо проложить ноды ИИ-сетки под ней. Такую ошибку можно увидеть лишь в отладочной сборке, в релизной же выдаётся лог ниже.
 
----
 
<syntaxhighlight lang="text">[error]Expression    : !object->used_ai_locations() || ai().level_graph().valid_vertex_id(object->m_tNodeID)
 
[error]Function      : CALifeSwitchManager::add_online
 
[error]File          : X:\xray\xrGame\alife_switch_manager.cpp
 
[error]Line          : 64
 
[error]Description  : Invalid vertex for object
 
[error]Arguments    : sim_default_military_1_sniper1561</syntaxhighlight>
 
Сам по себе лог малоинформативен и указывает лишь на то, что персонаж оказался вне ИИ-сетки. Причиной этого вылета может быть то, что точка пути (вейпойнт), на которой заспавнился персонаж, находится не на ИИ-сетке. См. описание выше.
 
  
 
== Сетевая игра ==
 
== Сетевая игра ==
Строка 271: Строка 189:
 
[error]Description  : rpoints for players not found</syntaxhighlight>
 
[error]Description  : rpoints for players not found</syntaxhighlight>
 
На карте отсутствуют точки респавна для игроков.
 
На карте отсутствуют точки респавна для игроков.
 +
  
 
[[Категория:Справка]]
 
[[Категория:Справка]]

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии GNU Free Documentation License 1.3 или более поздняя (см. xrWiki:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Отменить | Справка по редактированию  (в новом окне)