Канал в IRC
RusNet: #cmt
Учебник по созданию карт
Глава III. Компиляция (ZHLT).
§ 3.6 Ошибки компиляции
В данной статье мы подробно рассматриваем наиболее частые ошибки компиляции, рассказываем как их избежать и как исправить. В конце статьи мы приводим сводную таблицу всех возможных ошибок, причем в той форме, в которой они выдаются компиляторами ZHLT Custom Build. С небольшими изменениями данные ошибки выводятся и в официальных компиляторах ZHLT.Итак, известно, что далеко не все ошибки, имеющиеся на карте, обнаруживаются в редакторе карт при проверке на ошибки по [Alt-P]. Большинство серьезных ошибок обнаруживается только во время компиляции.Утилиты ZHLT при наличии ошибки создают файл *.ERR, в который записывается тип ошибки, номер объекта, вызвавшего ее, а также краткое руководство по исправлению, но, естественно, на английском языке.Содержание статьи:

    ЧАСТЬ 1. Наиболее часто встречающиеся ошибки компиляции

    1. Plane with no normal
      Пример:Entity 10, Brush 0, Side 4: plane with no normalEntity 10, Brush 0, Side 5: plane with no normalДанная ошибка возникает при неправильной манипуляции с вертексами. Как известно, любая плоскость определяется 3 точками. Если одна или несколько точек плоскости имеют одинаковые координаты, то это будет уже не плоскость, а линия или точка.Как исправить? Удалить неправильный объект и заменить его новым.
    2. Brush with coplanar faces
      Пример:Entity 10, Brush 0, Side 5: has a coplanar plane at (-753, -9, 251), texture CA1X_CON1BEntity 10, Brush 0, Side 6: has a coplanar plane at (-753, -32, 251), texture CA1X_CON1BДанная ошибка возникает при неправильной манипуляции с вертексами. Давайте рассмотрим случай возникновения такой ошибки. Предположим, что на карте у нас есть такой объект (см. рис. ниже).
      Пример объекта
      На виде сверху (2D top) в режиме работы с вертексами объект будет выглядеть, как показано на рисунке внизу, слева. Предположим мы решили сделать из этого объекта куб. Для этого верхнюю точку (вертекс) опускаем вниз (см. рис. ниже).
      Вид сверху на объект в режиме манипуляции с вертексамиНе правильное действие с вертексами
      Так делать нельзя! Так как мы получаем, что на одной стороне объекта расположено 2 плоскости, а этого быть не должно. Вот как эта не правильная операция выглядит в 3-х мерном виде (см. рис. ниже).
      Не правильное действие с вертексами (3D вид)Не правильное действие с вертексами (3D вид)
      Как исправить? Можно, узнав номер неправильного браша или энтити-объекта из ERR-файла с ошибкой, перейти к нему, нажав [Shift-Ctrl-G] в редакторе. При этом Вы увидите небольшое окошко (см. рис. ниже), первая строка которого позволяет перейти к определенному энтити-объекту,вторая - к брашу. Номер неправильного объекта указывается в ERR-файл в следующем виде:"Entity 10, Brush 0, Side 5....>, это означает, что ошибка у 10-го энтити-объекта на 5 стороне.
      Окно перехода к объекту по его номеру [Shift-Ctrl-G]
      После нахождения неправильного объекта, его можно удалить, а можно попытаться исправить. В приведенном выше примере необходимо переместить верхний средний вертекс направо или налево, таким образом, мы превратим две грани, лежащие в одной плоскости, в одну (см. рис. ниже).
      Перемещение вертексаПеремещение вертекса
      После переноса точки Вам будет задан вопрос: "Merge Vertices?> ("Совместить вершины?>), обязательно отвечайте "Да>.
      Вопрос: Соединить вершины? Отвечаем всегда - ДА
    3. Leaf portal saw into leaf
      Данная ошибка возникает, когда компилятор HLVIS пытается сравнить 2 портала (leaf portals), которые принадлежат одной видимой вершине (visibility node). Посмотрите на картинку ниже:
      Нет ошибки: порталы лежат на одной прямой
      Красный и желтый порталы на самом деле были одним порталом, которыл был разбит на два. Оба показанных портала должны лежать на одной прямой, но учитывая ограниченную точность компьютеров при осуществлении операций с плавающей точкой, эти порталы могут слегка наклониться по отношению друг к другу (угол наклона порталов настолько мал, что его невозможно заметить невооруженным глазом - только в бинокль :).Если возникает такая ситуация, когда два портала принадлежат одной вершине и образуют кривую линию, то получается ошибка "Leaf portal saw into leaf>. Вот как это выглядит:
      Ошибка: Leaf portal saw into leaf
      На рисунке выше угол наклона одного портала к другому сильно преувеличен (для наглядности). Также существуют несколько других похожих ситуаций, когда возникает данная ошибка, все они - результат ограниченной точности компьютеров в осуществлении операций с плавающей точкой.Как исправить? Лучше всего загрузить карту с ошибкой и попытаться отыскать, так называемый, эффект зеркального отражения (hall of mirrors effect). Эта ошибка может легко вызываться тем, что координаты одного из вертексов браша немного отклоняются от координатной сетки. В этом случае проще всего пересоздать неправильный браш, но также можно попробовать использовать параметр -full для компилятора HLVIS, который помогает уменьшить количество возможных vis-ошибок. Время компиляции с параметром -full обычно увеличивается на 30%. R_speeds (количество полигонов) при этом остается приблизительно таким же, как и при нормальной vis-компиляции.
    4. Brush 'outside world'
      Пример:Entity 10, Brush 0: outside world(+/-4096): (-9000, -64, 216)-(9000,23,283)Существует несколько причин, по которым возможно появление данной ошибки. Во-первых, такая ошибка возможна при наличии поврежденного браша (из-за неправильной манипуляции с вертексами). В этом случае необходимо внимательно посмотреть на координаты поврежденного объекта, которые сообщаются в ERR-файле с описанием ошибки. Если какая-то из координат равна -9000 или 9000, то такой объект должен быть удален и заменен новым.Во-вторых, такая ошибка может возникнуть из-за того, что объект находится вне зоны, доступной для редактирования или около ее границы. Объекты, находящиеся ближе 64 юнитов к границе, также могут вызвать данную ошибку, поэтому следите, чтобы Ваша карта не сильно приближалась к границам рабочего пространства в редакторе.
    5. Mixed face contents
      Пример:Entity 0, Brush 12: mixed face contentsTexture ROCK_X1 and SKYКаждый отдельный объект в Half-Life может быть окрашен в текстуру только одного типа (например, только в текстуру воды). Например, объект, окрашенный с пяти сторон обычной текстурой, ас шестой - текстурой воды, вызовет данную ошибку.Всего существует несколько типов текстур, которые не могут быть нанесены на объект вместе с другими. К таким текстурам относятся: SKY, CLIP, ORIGIN и текстуры воды. А самую подробную информацию о типах текстур и их совместимости Вы можете получить из соответствующей статьи: "Типы текстур в Half-Life/CS>.Как исправить? Перейдите к объекту, вызвавшему ошибку, по [Shift-Ctrl-G] и закрасьте его со всех сторон текстурами одного типа.
    6. === LEAK in hull 0 ===
      LEAK - дырка на карте. Это самая известная и, пожалуй, самая нелюбимая ошибка. А все потому, что ее трудно обнаружить и легче не допускать, чем потом часами искать (прям стихи :)А причиной такой ошибки является дырка (зазор) на уровне. Например, есть два браша, между которыми существует зазор (по неосторожности Вы не состыковали эти браши вплотную). Эти браши могут быть, например, стенами или землей Вашей карты. При компиляции программы-компиляторы, обнаружив такую дырку, начинают думать: "А что же за этой дыркой?>. Они видят зазор, а за ним ужасающая пустота :) - в итоге возникает ошибка.Ниже на картинке мы приводим пример такой ошибки.
      Одна из главных причин ошибки LEAK - дырка в уровне
      Но не всегда LEAK виден так явно, как на рисунке выше. Зачастую LEAK имеет очень маленькие размеры, гораздо меньше даже 1 юнита. Особо много LEAK'ов в декомпилированных картах. Например, Вы решили немного изменить De_Dust, разумеется, декомпильнули его, затем попытались вновь скомпилировать и получили кучу ошибок LEAK.Второй причиной вызывающей появление LEAK ошибки, является нахождение точечного энтити-объекта за пределами карты. Например, Вы сделали карту, построили вокруг нее небо и случайно поместили какой-нибудь там ambient_generic снаружи карты. В итоге получаем LEAK. Но это лучше, чем искать дырку на карте, т.к. объект найти гораздо проще.Как исправить? Можно воспользоваться специальной утилитой LeakMarker. А можно попытаться найти LEAK при помощи самой игры. Для этого нужно скопировать файл *.PTS, который создается в директории с компиляторами при обнаружении ошибки LEAK, в директорию "cstrike/maps>, где лежит Ваша недокомпилированная карта, которая тем не менее способна запускаться. Далее нужно запустить консоль и ввести: map имя_карты. После загрузки карты, пишем: pointfile.После ввода этих команд на своей карте Вы обнаружете тонкую извивающуюся линию из черно-белых точек (см. рис. ниже).
      Линия из точек, показывающая место ошибки LEAK
      Эта линия располагается около места с ошибкой LEAK. Запомнив место, открываете редактор и внимательно смотрите на границы брашей, четко ли они состыкованы. Попробуйте инструментом Vertex Manipulation выровнить вершины подозрительных брашей по координатной сетке.Если при попытке загрузить pointfile Half-Life вылетает - значит этот файл слишком большой. Придется применять другие методы.Если ничего не помогает и найти LEAK не удается, создайте вокруг карты небо коробкой, т.е. поместите всю свою карту в большую "комнату>, окрашенную со всех сторон текстурой SKY. Это поможет 100% :)Кстати, если Вы вдруг не заметили, что компиляторы выдали ошибку и подумали, что карта нормально откомпилировалась, то обнаружить неладное можно по жутким тормозам на карте (т.к. HLVIS не успел дойти до оптимизации карты), а освещение на карте будет очень светлым и монотонным (см. рис. выше). Теней от объектов не будет, т.к. HLRAD даже не приступил к работе из-за ошибки.
    7. Exceeded MAX_PATCHES
      Когда начинает работу компилятор HLRAD, обрабатывающий освещение на карте, он разбивает все видимые поверхности на небольшие участки, называемые патчами (patches). Существует ограничение на максимальное количество патчей - их не должно и не может быть больше 65535.По умолчанию размер каждого патча составляет 64х64 юнита. Если масштаб (scale) текстуры больше или меньше (речь идет не о размере текстуры, а именно о масштабе), то это сказывается на количестве патчей. Это означает, что текстура с масштабом 2, будет иметь в 4 раза меньше патчей, нежели текстура с масштабом 1.Когда Вы делаете вокруг карты небо в виде большой коробки, чтобы избежать ошибки LEAK (см. выше), компилятор HLVIS обрабатывает все поверхности снаружи карты, которые игрок в игре не видит (а значит зря он их обрабатывает :). На больших уровнях это может вызвать данную ошибку, т.к. количество патчей может превысить порог в 65535 штук.Как исправить? В строку запуска компилятора HLRAD можно прописать параметр "-chop 96> или "-chop 128>. Этот параметр устанавливает минимальный размер патча в юнитах. Напомним, что по умолчанию минимальный размер патча составляет 64 юнита. При установке размера патча более 96 юнитов, происходит заметное ухудшение качетсва освещения карты, может появиться эффект "лесенки> на тенях, отбрасываемых объектами.Также для уменьшения числа патчей можно увеличить масштаб (scale) текстур, например, больших текстур на скалах или земле. Большие по масштабу текстуры создают гораздо меньше патчей. Ну, а если небо у Вас сделано большой коробкой вокруг карты - закрасьте все внешние стороны и дно карты текстурой SKY. При компиляции такие поверхности не просчитываются на освещение и не создают патчей.
    8. Причины медленной работы HLVIS
      Время компиляции карты, а именно расчет ее визуальной части компилятором HLVIS, не должно быть слишком большим. На грамотно сделанных картах оно не должно превышать 40-45 минут при использовании машины класса PII-300.Причиной долгой работы HLVIS может быть окружение карты небом в виде большой коробки с целью избежания ошибки LEAK. В этом случае HLVIS обрабатывает большие территории снаружи карты, что увеличивает время его работы.Второй причиной увеличения времени компиляции HLVIS'ом может стать архитектура на карте. Это довольно трудно объяснить, поэтому приведем несколько примеров:
      • корридоры, пересекающие стену не под прямым углом;
      • браши, развернутые на произвольный угол;
      • большие, высокие комнаты с неперпендикулярными к земле стенами;
      • большое количество мелких брашей (не энтити) на обширных, открытых пространствах
      Третья причина: большие открытые территории, которые имеют большое число проходов в различные помещения, при условии, что движок их все прорисовывает.Как избежать долгой компиляции HLVIS? Просто не делайте описанного выше: не создавайте больших, открытых пространств; не делайте небо коробкой вокруг карты; корридоры разворачивайте на 30, 45 или 90°. Да, это все серьезные ограничения, но ничего поделать невозможно. Необходимо просто это принять. Half-Life далеко не новая игра и ее движок не расчитан на большое количество полигонов. Да, и нужны ли все эти "красоты> игроку? Главное - интересный геймплей.
    9. Причины медленной работы HLRAD (проблемы с MakeScales)
      У Вас долго проходит операция "Make Scales> или "Swap Transfers>? Тогда читайте ниже.Компилятору HLRAD необходимо довольно большое количество оперативной памяти. Количество памяти необходимое для обработки визуальной матрицы (vismatrix) компилятором HLRAD экспоненциально зависит от размера этой визуальной матрицы. Формула для расчета количества необходимой vismatrix-памяти такова: (количество патчей)2/16 = количество vismatrix-памяти в байтах. Если число патчей максимально 65535, то памяти потребуется 256 Мб.Но память необходима не только для просчета визуальной матрицы. Она также нужна для выполнения операции MakeScales. Количество необходимой памяти для этой операции приблизительно равно половине vismatrix-памяти, т.е. на обе операции вместе, в самом наихудшем случае с 65535 патчами, компилятору HLRAD может понадобится 256+128=384 Мб памяти.При выполнении операции MakeScales на больших детализированных картах можно часто наблюдать следующую особенность: сначала MakeScales доходит до 90%, скажем за 20 минут, а следующие 10% обрабатываются несколько часов или даже дней! Это происходит при исчерпывании ресурса оперативной памяти, при этом начинается активное обращение к файлу подкачки. Данную ситуацию можно поробовать разрешить, добавив параметр -sparse в строку запуска компилятора HLRAD. Это снизит затраты оперативной памяти на 10% за счет увеличения нагрузки на процессор. Ну, а лучше всего установить дополнительную оперативную память.Для ускорения работы HLRAD подходят те же методы, которые применяются для устранения ошибки "Exceeded MAX_PATCHES>, рассмотренной выше. Используя эти методы, можно уменьшить количество патчей, тем самым уменьшить потребность HLRAD в памяти. Также можно использовать параметр -bounce 0 для компилятора HLRAD. При этом на карте останется лишь прямое освещение, а отраженное попросту не будет просчитано. Но этот параметр можно применять только для тестовой компиляции. При окончательной компиляции парметр -bounce всегда должен быть больше 0.Также можно посоветовать использовать параметр -incremental для компилятора HLRAD. При этом при повторной (но не при первой!) компиляции будут "пропущены> стадии: BuildVisLeafs, MakeScales, SwapTransfers. Использовать этот параметр очень просто. В первый раз Вы компилируете карту как обычно, но добавив параметр -incremental. При этом будет дополнительно создан файл размером до нескольких десятков мегабайт. При повторной компиляции карты с этим же параметром данный файл будет использован и позволит пропустить перечисленные операции. Таким образом, если у Вас мало оперативной памяти, то можно помучиться только один раз (при первой компиляции), дальше все пройдет значительно быстрее. Кстати, если Вы поменяете свойства или расположение источников света (объекты: light, light_spot и light_environment), то не забудьте обновить эту информацию в MAP-файле при помощи параметра -onlyents, прописанного в компиляторе HLCSG.
    10. HLRAD failled to allocate a block of memory
      Программа HLRAD (просчитывающая освещение) не смогла продолжить работу из-за недостатка памяти. В этом случае необходимо увеличить размер виртуальной памяти (файла подкачки) или (что гораздо лучше) установить дополнительную оперативную память на компьютер.Если Вы не знаете, где в Windows изменяется размер виртуальной памяти, прочитайте об этом в статье "Что такое компиляция?>.
    11. Bad Surface Extents
      Обычно данная ошибка возникает при нанесении текстур со слишком большим масштабом (более 10, а обычно более 100). Эту ошибку можно обнаружить и в редакторе Hammer. Там она будет найдена, как "Texture axis perpendicular to face". А иногда в редакторе ничего не отображается, вроде бы все чисто. Здесь надо попытаться вспомнить, чего такого необычного Вы сделали на своей карте в последнее время :) Может быть Вы сможете найти какой-то подозрительный объект или вспомните, что раньше были какие-то проблемы с текстурами у какого-то объекта. В общем поищите немного, и Вы наверняка найдете причину данной ошибки.
    12. Missing [ in texturedef
      Возможно несколько причин появления данной ошибки:
      • Одна или несколько поверхностей объекта не имеют текстуры (в редакторе такие объекты изображаются абсолютно белыми), или же имя текстуры состоит только из пробелов.Проверьте карту на ошибки [Alt-P], редактор покажет такую ошибку как "Invalid texture"
      • В имени текстуры присутствуют пробелы (это недопустимо). Замените такие текстуры.
      • Данная ошибка возникает при импорте карт из WorldCraft 3.3 в WorldCraft 2.1, 2.0
      • Данная ошибка возникает при импорте карт из WorldCraft 3.3 в QuArK
      • Карта сохранена в формате *.MAP, но в поле worldspawn отсутствует: "mapversion" "220" (встречается очень редко)
    13. MAX_PORTALS_ON_LEAF
      Обычно такая ошибка возникает из-за больших комнат с большим количеством ведущих в нее корридоров. Также причиной может быть поврежденный (неправильный) браш. Такой браш можно отыскать по [Alt-P].
      Пример комнаты (вид сверху)
      На картинке сверху изображена комната на виде сверху. Розовое - комната, синее - ее стены. Розовая комната является одной большой плоскостью, пространством (leaf). Данная комната соединяется с 32-мя небольшими комнатками (углубления в стенах), таким образом, у одного leaf образуется 32 портала (portals).Так как в Half-Life "MAX_PORTALS_ON_LEAF" может быть равным 256, то данная ошибка чаще всего случается из-за "битого" браша.
    14. MAX_MAP_CLIPNODES
      Clipnodes - поверхности, определяемые игровым движком, как непроходимые для игрока. Каждый браш на карте (будь-то стена, пол или ящик) "окутывается" clipnode-поверхностями. Благодаря clipnode'ам игрок не проваливается сквозь землю и не может проходить сквозь стены. Помните старый халфовский чит "noclip" (хождение сквозь стены) - вот это оно и есть :)Слишком большое число этих плоскостей может вызвать ошибку. В улучшенных компиляторах ZHLT Custom Build по умолчанию включен режим экономии таких плоскостей. Это означает, что при использовании этой версии компиляторов, количество clipnode-плоскостей будет меньше, чем обычно, но это не застраховывает Вас от появления данной ошибки.Когда Вы делаете вокруг карты небо в виде большой коробки, чтобы избежать ошибки LEAK, создается большое число clipnodes, что может привести к появлению ошибки MAX_MAP_CLIPNODES, к тому же это приведет к увеличению времени работы компилятора HLVIS.В архиве с официальной версией (неулучшенной) утилит ZHLT 2.5.3 есть пример (карта clipnode.map), в котором показано, как можно сберечь большое количество clipnodes.Давайте посмотрим на картинку с этой карты:
      Пример экономии clipnodes
      На данном рисунке CLIP и HINT браши представлены в разрезе. Они имеют абсолютно одинаковый размер и расположены аккурат по размерам объекта. Если бы мы не поместили эти браши, то вокруг такого объекта с большим числом сторон было бы образовано большое количество clipnode-плоскостей, которые должны были бы точно указать форму объекта, через которую игрок не может пройти. А используя данный метод, мы значительно уменьшаем количество clipnodes, тем самым уменьшаем вероятность возникновения ошибки MAX_MAP_CLIPNODES и уменьшаем время работы компилятора HLVIS.Мы провели эксперимент и скомпилировали карту с CLIP-брашем и без него. И вот результаты:
      • Clipnode-плоскостей с CLIP-брашем (как на рисунке): 30
      • Clipnode-плоскостей без CLIP-браша: 149
      Как видите, результат более чем интересный. Получается, что используя CLIP-браш вокруг объектов с большим количеством сторон, мы сохраняем приличное количество clipnode-плоскостей. Конечно, если карта небольшая и clipnode-плоскостей порядка 10.000-15.000, то особого смысла экономить нет, но это может пригодится при создании большой карты. Кстати, оказалось, что HINT-браш никоим образом не влияет на количество clipnodes, его можно не использовать.

    ЧАСТЬ 2. Обзор всех ошибок компиляции

    Общие ошибки для всех компиляторов
    Ошибка
    Описание
    Как исправить
    Memory allocation failureКомпилятор не смог разместить информацию в памятиОзначает, что файл подкачки исчерпан. Увеличьте размер SWAP-файла или добавьте оперативной памяти
    NULL PointerВнутренняя ошибка компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Bad Thread WorkcountВнутренняя ошибка компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Unable to create threadВнутренняя ошибка компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Exceeded MAX_MAP_PLANESПревышено максимально допустимое число плоскостей (> 32767)Уменьшите размер карты, сделайте ее менее детализированной
    Exceeded MAX_MAP_TEXTURESПревышено максимально допустимое количество текстур (> 512)Уменьшите количество текстур
    Exceeded MAX_MAP_MIPTEXПревышено максимально допустимое количество памяти, выделяемой для текстур (> 4194304 байт)Уменьшите количество разных текстур, уменьшите размер текстур или установите параметр -texdata (подробнее об этом параметре читайте здесь)
    Exceeded MAX_MAP_TEXINFOВнутреннее ограничение компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Exceeded MAX_MAP_SIDESВнутреннее ограничение компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Exceeded MAX_MAP_BRUSHESПревышено максимально допустимое число брашей(> 8192)Уменьшите число брашей
    Exceeded MAX_MAP_ENTITIESПревышено максимально допустимое число энтити-объектов для компиляторов (> 1024)Уменьшите число энтити-объектов
    Exceeded MAX_ENGINE_ENTITIESПревышено максимально допустимое число энтити-объектов для движка Half-Life (> 1024)Уменьшите число энтити-объектов
    Exceeded MAX_MAP_MODELSПревышено максимально допустимое число брашевых энтити-объектов (> 400)Уменьшите число брашевых энтити-объектов. Если это возможно, объедините несколько объектов в один
    Exceeded MAX_MAP_VERTSВнутреннее ограничение компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Exceeded MAX_MAP_EDGESВнутреннее ограничение компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Exceeded MAX_MAP_CLIPNODESПревышено максимально допустимое число clipnode-плоскостей (> 32767)Данная ошибка описана в первой части этой статьи
    Exceeded MAX_MAP_MARKSURFACESВнутреннее ограничение компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Exceeded MAX_MAP_FACESПревышено максимально допустимое число полигонов (> 65535)Увеличьте масштаб (scale) текстур на больших поверхностях (земля, стены, горы и т.п.). Возможно, ваша карта слишком большая. Уменьшите ее размер, сделайте менее детализированной
    Exceeded MAX_MAP_SURFEDGESВнутреннее ограничение компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Exceeded MAX_MAP_NODESПревышено максимально допустимое число секций (> 32767)Уменьшите размер карты, сделайте ее менее детализированной
    MAX_MAP_HULLS Карты в Halflife, как и Quake1, имеют 4 замкнутые области (hulls), используемые движком игры: 1 область - видимая (для обрисовки видимых участков карты), и 3 области - ограничительные (для ограничения движения игроков на карте).

    Максимальное кол-во: 4
    MAX_MAP_ENTSTRING (512*1024) Максимальный размер одной строки в файле *.map был превышен.

    Максимально допустимый размер: 512 Кб
    Забейте на эту ошибку, наверное, только у редкостных мапперов J возникают такие вот проблемы.
    MAX_MAP_LEAFS При компиляции карта разбивается на плоскости, доступные игроку.
    Максимально: 8192
    попробуйте упростить вашу карту, уменьшить ее в размере или обратить мелкие предметы в func_wall.
    MAX_PATCHES Не знаю, как перевести, но попробую объяснить.

    HLRAD и HLVIS при компиляции делит каждую видимую плоскость браша на отдельные "patches". Позже на них (на "patches") разместится свет (еще называют "картой света"). По умолчанию начальный размер "patches" составляет 64х64 юнита и зависит от размера текстуры, в которую выкрашена эта плоскость.

    Вы можете уменьшить подсчет каждого patch'а, увеличив размер "patches". Это можно сделать, только увеличив масштаб текстуры (имеется в виду, не увеличить в размере, из 64х64 сделать 128х128, а просто растянуть с помощью WC).

    Пример: У вас есть стена размером 128х128. Она выкрашена текстурой, чей размер составляет 64х64. Соответственно, на нашей стене будет четыре таких текстуры или четыре "patches". Таким образом, увеличиваем масштаб текстуры с 1.00 до 2.00 и получаем 1 "patches". Сократили кол-во "patches" на 1/4.

    Часто такая ошибка бывает, когда новичок (именно он! Потому что больше такого никто не делает J) создает вокруг своей карты большой блок неба, дабы избежать другой, более противной ошибки "LEAK". Никогда так не делайте! Во-первых, увеличивается в раз пять работа HLVIS (точно: на 80%). Во-вторых, обрабатывается внешняя часть карты, которую игрок видеть никак не может, да и не должен. Количество "patches" увеличивается вдвое, а то и втрое.
    MAX_MAP_LIGHTING 0x400000 Из-за больших данных при вычислении освещения возникает такая ошибка. Попробуйте уменьшить количество источников света на вашей карте.
    MAX_MAP_VISIBILITY 0x200000 Из-за больших данных при вычислении видимого пространства возникает такая ошибка. Вероятно ваша карта слишком большая или слишком сложная по архитектуре.
    CompressVis OverflowВнутренняя ошибка компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    DecompressVis OverflowВнутренняя ошибка компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Execution CancelledЗапуск компилятора был прерван пользователем или установками компилятора 
    Internal ErrorВнутренняя ошибка компилятораСообщите об этой ошибке на merlinis@bigpond.net.au

    Ошибки компилятора HLCSG

    Ошибка
    Описание
    Как исправить
    Missing '[' in texturedef (U)Одна или несколько поверхностей на карте не имеют текстур или окрашены текстурой, в названии которой есть пробелыДанная ошибка описана в первой части этой статьи
    plane with no normalНеправильная форма объекта, полученная в результате манипуляции с вертексамиДанная ошибка описана в первой части этой статьи
    brush with coplanar facesНеправильная форма объекта, полученная в результате манипуляции с вертексамиДанная ошибка описана в первой части этой статьи
    brush outside worldНеправильная форма объекта, полученная в результате манипуляции с вертексамиДанная ошибка описана в первой части этой статьи
    mixed face contentsОбъект имеет на себе текстуры, которые не могут сочетататьсяДанная ошибка описана в первой части этой статьи
    Brush type not allowed in worldНеразрешенный тип брашевого энтити-объектаУдалите объект или замените другим
    Brush type not allowed in entityНеразрешенный тип точечного энтити-объектаУдалите объект или замените другим
    No visibile brushesНет видимых объектов или все они CLIP- и ORIGIN-браши (на карте должен быть хотя бы один видимый объект) 
    Entity with ONLY an ORIGIN brushЛюбой энтити-объект должен состоять хотя бы из одного видимого брашевого объекта. CLIP, HINT и ORIGIN-браши не являются видимыми 
    ORIGIN brushes not allowed in entity Энтити покрашен в текстуру origin, но такая текстура этому объекту не нужна. Найдите этот энтити и просто удалите или до\перекрасте, так что бы он не содержал текстуры origin.
    ORIGIN brushes not allowed in world На вашей карте находится origin браш (так называется браш, покрашенный в текстуру origin естественно), не связанный с какой либо энтити (объектом). Найдите такой браш, удалите его или свяжите его с энтити.
    Такая ошибка возникает при попытке создать дверь. Дверь и origin браш должны быть сгруппированы.
    ONLY an origin brush near (x,y,z)Эта ошибка похожа на две предыдущие. Исправляется аналогично.
    Could not find WAD fileКомпиляторы не смогли обнаружить текстурный wad-файл, указанный в картеПроверьте наличие всех подключенных к редактору текстурных библиотек или используйте параметр -wadconfig (подробнее об этом параметре читайте здесь)
    Exceeded MAX_TRIANGLESВнутреннее ограничение компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Exceeded MAX_SWITCHED_LIGHTSПревышено максимально допустимое количество включаемых/выключаемых источников света (light или light_spot)Уменьшите количество таких источников света
    Exceeded MAX_TEXFILESВнутреннее ограничение компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Token too large on line n Вы используете слишком много *.WAD файлов на вашей карте

    Имена ваших ВАД файлов сохраняются в отдельную строку в *.map файл. И если у вас слишком много вадов, то превышается лимит символов на одну строку в вашем *.map файле. Я предполагаю, что максимальное значение символов: 256.

    Удалите из списка те ВАД файлы, которые вы не используете.

    Если у вас, например одна текстура из одного вада, другая из другого, третья из третьего, то предлагаю с помощью специальной проги (Wally) создать свой вад со своими текстурами.

    Далее, такие вады, как:
    cached.wad
    pldecals.wad
    spraypaint.wad
    gfx.wad
    fonts.wad

    можно убрать из списка. Они вам не понадобятся.
    Parsing Brush Эта ошибка возникает по различным причинам:
    • Браш выкрашен простой текстурой и прозрачной (имя такой текстуры начинается на { и чаще всего синего цвета) текстурой одновременно.
    • WC 3.3 идет с пакетом очень старых компиляторов. Пользуйтесь Зонерами.

    Ошибки компилятора HLBSP

    Ошибка
    Описание
    Как исправить
    LEAK in the mapНа карте присутствует "дырка"Данная ошибка описана в первой части этой статьи
    Exceeded MAX_LEAF_FACESНа карте присутствует поврежденный браш или масштаб (scale) текстуры слишком маленький (от -1 до 1)Удалите поврежденный браш (в основном проверьте вставленные на карту префабы, браши полученные с использованием Carve или путем манипуляции с вертексами). Увеличьте масштаб текстуры
    Exceeded MAX_WEDGESВнутреннее ограничение компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Exceeded MAX_WVERTSВнутреннее ограничение компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Exceeded MAX_SUPERFACEEDGESВнутреннее ограничение компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Empty Solid EntityБрашевый энтити-объект (brush-based), например, func_wall не содержит брашей (пустой)В редакторе нажмите [Alt-P], перейдите на такой объект кнопкой Go to error, закройте окно с ошибками, убедитесь, что размер объекта не является реальным (например, -1999998w), нажмите Delete, чтобы удалить объект. Повторите все шаги для каждого "пустого" объекта.
    ERRORLOG D:\compiling\mapname.err detectedИсправьте все ошибки, отмеченные в файле mapname.err (mapname естественно имя вашей карты). Потом просто удалите этот файл.
    Can`t open c:\......\mapname.p0 HLbsp не может открыть или найти файл mapname.p0, который создается Hlcsg. Надо отметить, что HLcsg компилит карту перед HLbsp, так, что ищи проблему там, почему не создался данный файл.
    MakeNodePortal: new portal was clipped away from node @(x,y,z)-(x,y,z) HLBSP не смог создать некоторую часть пространства. Это вызвано или сложностью стыковок брашей (например: пересекаются) или большим углом наклона между двумя брашами. В результате игрок будет задевать за что-то невидимое.

    Если ваша карта компилится и r_speeds в норме, то можете пренебрегать этим предупреждением.

    В противном случае найдите браши по данным координатам и упростите или удалите их.

    Ошибки компилятора HLVIS

    Ошибка
    Описание
    Как исправить
    Leaf portal saw into leaf  Данная ошибка описана в первой части этой статьи
    Exceeded MAX_PORTALS_ON_LEAFПревышено максимально допустимое количество порталов для одной leaf-поверхности или на карте присутствует поврежденный браш (порталов > 256)Данная ошибка описана в первой части этой статьи
    Max_Leaf_Faces Слишком много видимых частей брашей. Если ваша карта содержит множество мелких деталей, советую обратить эти детали в func_wall, так как энтити в ХЛ обрабатываются в реальном времени.
    Vismap expansion overflow Аналогичная предыдущему примеру ошибка.  
    Texture axis perpendicular to face Какая либо текстура сильно растянута. То есть имеет большой масштаб. Минимальный и максимальный масштаб текстуры: -999 и +999 соответственно.

    Дополнительные причины:
    1. Браш вращался, без включенного "Texture Lock".
    2. Из-за неправильного обращения с такими инструментами как: vertex tool и carving tool. Иногда - Clipping tool.
    Invalid client/server stateВнутренняя ошибка компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Error opening c:\..\mapname.bsp No such file or directory Эта ошибка возникает в том случае если произошла другая ошибка при компиляции HLBSP и HLCSG. Так что смотри логии компиляции.
    Warning: No .prt File Found, No VISing Performed
    bzw.

    1 thread(s)
    LoadPortals: couldn`t read c:\..\..\mapname.prt
    No vising performed.
    Этот файл нужен визу для вычислений видимости на карте. Как и в прошлой ошибке произошла ошибка в HLBSP и HLCSG. Да спасут нас логи!
    Ошибки компилятора HLRAD
    Ошибка
    Описание
    Как исправить
    Error opening c:\..\mapname.bsp
    No such file or directory
    Эта ошибка возникает в том случае если произошла другая ошибка при компиляции HLBSP и HLCSG. Так что смотри логи компиляции.
    Too Many Direct Light Styles on a Face Это значит, что более 3 источников света освещают одну плоскость.

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

    Максимальное кол-во различных по свойствам источников света - 3.
    Exceeded MAX_TEXLIGHTSПревышено максимально допустимое число светящихся текстурУменьшите количество светящихся текстур, используемых на карте
    Exceeded MAX_PATCHESПревышено максимально допустимое количество патчей (> 65535)Данная ошибка описана в первой части этой статьи
    Transfer < 0Внутренняя ошибка компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Bad Surface ExtentsНа объект были нанесены текстуры со слишком большим масштабом (scale больше 10, но обычно больше 100). Данная ошибка описана в первой части этой статьи
    Malformed face normalПримененный тип выравнивания текстуры на видимой поверхности объекта не возможенПроверьте карту на ошибки, нажатием [Alt-P]. Исправьте все ошибки "Texture axis perpindicular to face"
    No Lights!На карте нет источников светаДобавьте источник света (light, light_environment или light_spot)
    Bad Light TypeВнутренняя ошибка компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    Exceeded MAX_SINGLEMAPВнутреннее ограничение компилятораСообщите об этой ошибке на merlinis@bigpond.net.au
    SwapTransfers: Unmatched Эта ошибка вызвана проблемой в коде HLRAD. Так же она может следовать после предупреждения Leaf_Portal_Saw_Into_Leaf
    MAKE SCALES takes a very long time, the computer seems to be stuck Причина: недостаток оперативной памяти. Факт, что MAKE SCALES требует немало оперативки. При заполнении всей памяти MAKE SCALES обращается к жесткому диску (своп). Для этого освободите как минимум 800 Мб на вашем Харде. Если MAKE SCALES обращается к диску, то время компиляции может увеличиться в 100 (сто!) раз относительно RAM'а!!!

    Если во время компиляции вы нажмете ctrl-alt-del то увидите, что-то типа "HLRAD не отвечает". Вранье! Ваш процессор, жесткий диск и оперативка работают на максимуме. Нарастите память или продеться потерпеть.

    Кстати, при нажатии трех клавиш во время компиляции HLCSG, HLBSP, HLVIS та же история, так что просто подождите.
    Таблица обновлена данными с poligon.cs2.ru


    Глава III. Компиляция (ZHLT).


    К оглавлению Учебника

    © http://cs-mapper.by.ru/
    CMT (CS Mapping Tutorials) - © 2006-2011. Created by VM
    [ Script Execution time: 0.0061 ]