вернуться на beanet.ru вернуться к списку проектов вернуться на главную страницу сборника

Тема: Решение ошибок и проблем копилка


Ключевые слова: поиск ошибка проблема error

См. также:
Список используемых понятий, сокращений и обозначений

перейти к общему списку

Примечание: Это пополняемая "копилка" сведений (не является законченной статьей).

Есть полезный ресурс (на английском языке), который содержит описание и решение всех ошибок компиляции - по адресу http://www.interlopers.net/errors/. На указанной странице есть даже текстовое поле, в которое можно скопировать журнал (лог) компиляции карты и проверить на ошибки.
Дополнительно, можно почитать тему Ошибки компиляции и способы их устранения

Замечание: большинство проблем, возникающих при работе с редактором Hammer и вообще со Steam, происходят из-за использования нелицензионной версии и не обсуждаются на большинстве форумов по маппингу. Их рассмотрение невозможно и в этой справке.



Проблема: редактор 3D-объектов Autodesk Softimage Mod Tool (или XSI Mod Tool) при запуске выдает ошибку: User's directory contains non ascii character(s). XSI will terminate

Решение: возможны 2 варианта.
  1. создайте пользователя с именем, содержащим только английские буквы. Войдите в Windows с этим именем и установите Mod Tool с нуля. Не рекомендуется, как довольно трудоемкий.


  2. запустите редактор простых текстовых файлов (например Блокнот), откройте файл setenv.bat в каталоге <путь установки Mod Tool>/Application/bin и подправьте строку set XSI_USERROOT=<каталог пользователя> (в начале файла), изменив путь к каталогу пользователя таким образом, чтобы в нем отсутствовали русские буквы (и другие проблемные символы). Конечно, указанный каталог должен существовать на диске.


Проблема: в игре наблюдается эффект "плывущей" картинки, т.е. при взгляде в определенном направлении или сквозь конкретное отверстие в стене (окно, дверь, пролом и т.п.) изображение начинает оставлять следы, веерообразно накладывающиеся друг на друга. Эти следы могут заслонять другие объекты или NPC.

Пример:

'плывущее' изображение

Причина: наличие утечек (leaks) на карте. Другими словами, на карте есть "дыры в окружающее пространство".

Решение: просмотрите журнал (лог) компиляции в поисках строк …leaked! и исправьте карту, пользуясь выданными в тексте ошибок координатами (можно использовать пункт меню Map -> Load Pointfile). Более подробно см. Утечки.

Замечание: по-видимому, многие ошибки компилятора VVIS происходят из-за наличия утечек в карте. Как следствие - при ошибках VVIS в первую очередь проверяйте карту на утечки.



Проблема: неправильные отражения на воде, поверхности отражают только небо (skybox).

Решение: необходимо расставить на карте энтити env_cubemap и выполнить построение кубмапов. Подробнее см. разделы env_cubemap, Отражения и кубмапы.



Проблема: источник света не появляется на карте (отсутствует его свет).

Причина: это происходит из-за частичного или полного перекрытия источника света брашем или энтити (предполагается, что параметры источника выставлены правильно, он изначально включен, а компиляция карты выполнена с VVIS и VRAD), т.е. источник света "погружен" в них частично или полностью.

Решение: расположите источник света таким образом, чтобы он по не "залезал" в другие объекты и не соприкасался с ними.



Проблема: в журнале (логе) компиляции сообщение об ошибке содержит название файла или каталога, содержащее пробелы или русские буквы.

Причина: оболочка Steam и поддерживаемые ею программы (редактор Hammer, компиляторы и т.д.) некорректно обрабатывают названия файлов и каталогов с вышеупомянутыми особенностями.

Решение: необходимо исправить все пути и имена файлов, убрав пробелы и русские буквы.

Замечание: в качестве временной меры можно не убирать пробелы, а просто заключить все соответствующие пути в двойные кавычки (""), настроив соответствующим образом компиляцию. Но в окончательном варианте не стоит использовать пробелы в названиях каталогов Steam и модов, хотя бы потому, что игроки, скачавшие Ваш мод, могут столкнуться с проблемой запуска (в лучшем случае).

Замечание: если пути к файлам Steam содержат каталоги с некорректными именами, необходимо не просто изменить названия каталогов, а переустановить Steam с исправленным путем для установки. Не забудьте предварительно сделать копии важных файлов (см. ниже).

Замечание: если каталоги с некорректными именами содержит путь только к Вашему моду, достаточно заново создать мод с корректным путём. Затем переместите ранее созданные карты, материалы, текстуры и прочее из старых каталогов в новые.
Если ничего не потерялось, можно удалять старый каталог мода.

Замечание: желательно сделать копии фалов *.gcf (из каталога Steam) перед удалением самого Steam - это сэкономит затраты на повторную установку Steam. Не придется заново скачивать все обновления и устанавливать нужные программы (игры). Просто установите Steam, скопируйте сохраненные *.gcf-файлы в каталог <путь установки Steam>/SteamApps и перезапустите Steam. Все ранее существующие игры будут восстановлены.



Проблема: в журнале (логе) компиляции появляются сообщения WARNING: Cluster portals saw into cluster.

Причина: сложный по форме браш, или большой браш, не выровненный по сетке в редакторе Hammer (т.е. редактировавшийся с нажатой клавишей Alt).

Решение: преобразуйте сложные браши в энтити (НО энтити не ограничивают пространство карты и могут вызвать утечки при компиляции; в этом случае нужно добавить простые браши позади энтити). Если есть браши, не выровненные по сетке, желательно выровнять их все.



Проблема: при запуске откомпилированной карты (или мода) появляется сообщение об отсутствующем *.dll-файле.

Причина: возможно, ни разу не была запущена игра (под которую делается мод) или нарушена целостность файлов игры.
Возможно и такое, что в папке /bin мода отсутствуют файлы движка client.dll и server.dll; либо вообще отсутствует данная папка.

Решение: соответственно, запустите и закройте нужную игру или проверьте целостность кэша этой игры (доступна в свойствах игры на закладке Локальные файлы, Интернет должен быть доступен).
Если указанная папка или файлы в ней отсутствуют, создайте bin в каталоге мода и скопируйте туда недостающие *.dll-файлы из каталога <путь установки Steam>/SteamApps/<имя аккаунта>/half-life 2 episode two/episodic/bin (для Orange Box).



Проблема: вся карта в игре освещена равномерно белым светом.

Причина: такое происходит, если на карте нет ни одного источника света (или карта скомпилирована без обработки VVIS и VRAD). Как следствие - при загрузке такой карты автоматически выставляется mat_fullbright = 1, т.е. задаётся равномерное освещение всего пространства.

Решение: очевидно, добавить на карту хотя бы один источник света (или выполнить компиляцию с запуском VVIS и VRAD, соответственно).



Проблема: некоторые (предположительно неподвижные) модели почти/совсем не освещены, хотя всё остальное вокруг них освещено правильно.

Пример: слева модель лампы освещена нормально, справа - модель тёмная

модель внутри и на границе листа видимости

Причина: скорее всего, плохо освещённые модели касаются границы листа видимости. Как правило, эту границу задаёт обычный браш.

Решение: попробуйте чуть отодвинуть модель от обычного браша: так, чтобы его не касался bounding box модели; если необходимо, добавьте "фальшивый браш" в виде func_detail, displacement и т.п.



Проблема: после очередных изменений и компиляции произошло неожиданное снижение производительности движка (частоты кадров) в игре, либо компиляция прерывается, либо при сохранении и последующем открытии карты теряются некоторые браши (выдаётся сообщение об ошибке).

Причина: скорее всего Вы пользовались функцией Carve (вырезка общих участков пересекающихся брашей) редактора Hammer или добавили браши нестандартной формы (не в виде прямоугольного параллелепипеда, выровненного по сетке редактора).

Решение: исправляется превращением сложного браша в энтити (обычно func_detail), а также отказом от функции Carve различными ухищрениями.



Проблема: после очередных изменений обнаружилось, что один из обычных брашей имеет нулевую толщину и стал проницаемым.

Причина: обычный браш с измерением в 1 единицу (вдоль любой оси) ведёт себя нестабильно и может обрести нулевую толщину (например, после использования той же Carve), потеряв непроницаемость.

Решение: просто не делайте столь узких брашей.



Проблема: все мониторы (func_monitor) в одно и то же время показывают изображение только с одной камеры (point_camera), независимо от раздельно подаваемых команд.

Причина: это особенность движка: во всех текстурах для мониторов используется одна и та же специальная процедурная текстура _rt_Camera (также используется и на моделях с передачей изображения камеры). Когда подаётся команда установки камеры-источника, данная текстура "переключает трансляцию" изображения на неё. Естественно, все материалы, использующие данную текстуру, начинают показывать одно и то же изображение с выбранной камеры.
Дополнительно, это означает, что и качество изображения нельзя улучшить средствами маппинга, т.к. оно зависит от разрешения текстуры _rt_Camera.

Решение: можно добавить псевдо-трансляции в виде готовых анимированных текстур (как это сделано, в частности, на некоторых мониторах в Half-Life 2). Либо есть вариант - добавить свои процедурные текстуры (на уровне программного кода). Затем добавить новые материалы для мониторов, которые будут использовать уже новые процедурные текстуры. Если понадобится в игре переключать изображение, придётся ещё доработать функциональность энтити по части задания источника изображения.

Примечание: в играх Portal и Portal 2 заведомо используются две разные процедурные текстуры, выполняющие передачу изображения. На относительно слабых системах можно заметить некоторое снижение производительности движка (торможение), если даже открыть два портала рядом друг с другом и смотреть на них. А падение производительности, когда порталы открыты напротив друг друга (появляется эффект "бесконечного отражения"), и вовсе ощутимо на большинстве систем.
Отсюда вывод: реализацию мониторов с независимой передачей изображения лучше сделать обходными путями, чем добавлять существенные нагрузки в работу движка.



Проблема: в конструкции из двух и более зависимых триггеров появляются лишние ("паразитные") срабатывания, которые по идее быть не должны.

Причина: если Вы действительно уверены, что всё настроено правильно, то причина может быть именно в сочетании нескольких триггеров.

Пример: при попадании игрока в определённую область запускается набор скриптов, с их повторением до тех пор, пока игрок находится внутри большей, по сравнению со стартовым триггером, области. Здесь скорее всего появится данный эффект, т.к. получается совместная работа не менее двух триггеров.

Решение: можно отключать триггер запуска (командой Disable) сразу же при срабатывании, в числе прочих действий. А триггер проверки тестировать по TouchTest (см. Триггеры и скрипты). По окончании реакции можно вновь разрешать (Enable) работу триггера запуска. Вероятно, так же следует поступать и для остальных конструкций подобного рода



Статьи (рус):
Статьи (eng): http://www.interlopers.net/errors/

перейти к общему списку

Номер статьи: 34

Сборник полезной информации по созданию модификаций на движке Valve Source Engine (игры Half-Life 2, Episode One, Episode Two)