Один из наиболее частых вопросов, которые задают мапперы, вынесен в заголовок нашей статьи. Действительно, далеко не у всех еще мощные компьютеры, и порой приходится ждать, пока откомпилируется карта, несколько часов. В этой статье мы постараемся рассказать о всех возможных способах ускорения компиляции карты. Мощность компьютера
Конечно же, в первую очередь, время компиляции зависит от мощности компьютера. Если быть точнее, то от частоты процессора и количества оперативной памяти. Чем больше и того, и другого, тем лучше. Если оперативной памяти мало, то здесь время компиляции начинает зависеть и от скоростных характеристих винчестера. Действительно, если при компиляции свободная оперативная память закончилась, то начинает использоваться SWAP-файл (файл виртуальной памяти). И чем быстрее винчестер передает данные из него, тем быстрее пройдет компиляция.
Что касается конкретных цифр, то, по опыту, для компиляции средней карты (средней как по размерам, так и по сложности внутреннего строения) необходимо порядка 256 Мб оперативной памяти. Лучше 384 Мб. Под словом «средней» следует понимать карту типа De_Inferno. Для более крупных карт памяти может понадобится еще больше. В общем, чем больше памяти у Вас установлено, тем быстрее пройдет компиляция.
Замедление компиляции из-за нехватки памяти
Если Вы наблюдали такую картину: компиляция идет довольно быстро, доходит до 90%, а затем каждый процент преодолевается чуть ли не часами, то это верный признак нехватки оперативной памяти. При этом Вы можете заметить мигание лампочки винчестера, указывающее на использование SWAP-файла.
Часто такая ситуация начинается на операции MakeScales и SwapTransfers компилятора HLRAD. Исправить данную ситуацию можно резким упрощением карты (уменьшением ее размеров, изменением внутреннего строения) или установкой дополнительной оперативной памяти. Выбирайте из этих двух вариантов по своим возможностям. Или же, как третий вариант, попросите откомпилировать свою карту друга
Остановка компиляции из-за нехватки памяти
Бывает и так, что компиляция завершается раньше времени из-за полного исчерпания всех видов памяти (и оперативной, и виртуальной). При этом компиляторы ZHLT выдадут примерно такой текст ошибки: «HLRAD.EXE failed to allocate a block of memory». Выходом из ситуации может быть увеличение SWAP-файла или установка дополнительной оперативной памяти.
Программа для компиляции
Скажите НЕТ компиляции через Hammer или Worldcraft. Если у Вас слабый компьютер, используйте для компиляции только пакетный BAT-файл. Дополнительно перед компиляцией уберите все программы из автозагрузки, увеличьте размер SWAP-файла, перезагрузитесь и начинайте компиляцию.
Комплексность карты
Под словом «комплексность» карты следует понимать совокупность размеров карты и сложность ее внутреннего строения. Прекрасными примерами комплексных карт служат довольно известные карты: De_Volare, De_Laguna, Cs_Shogun и др. На каком-нибудь PII-400 при 64 Мб памяти эти карты могут компилировать днями!
Обширные открытые пространства, изобилие наклонных поверхностей различной формы (например, горы), большое количество источников света — все это заметно (!) увеличивает время компиляции. К тому же без должной оптимизации, карты, подобные перечисленным выше, будут несщядно тормозить на любой машине просто потому, что старый движок Half-Life не способен обрабатывать уровни таких размеров и такой сложности.
Чтобы хоть как-то ускорить компиляцию больших карт необходимо, во-первых, закрашивать все невидимые игроком поверхности (крыши домов, обратные стороны стен карты, дно карты) SKY-текстурами, во-вторых, стараться делать дно и внешние стены карты плоскими, без впадин и ям, идеально, чтобы стены и дно образовывали непрерывную плоскость. Первый совет поможет ускорить просчет освещения (одну из основных операций), т.к. при компиляции SKY-текстуры не просчитываются на освещение; второй совет пригодится, если Вы строите небо карты одной большой коробкой, в этом случае между небом и картой не останется «пустот», что ускорит оптимизацию карты компилятором HLVIS.
Источники света
Замедление компиляции может вызвать большое количество источников света, собранных в одном месте. А если они еще будут мигающими или выключающимися, то время компиляции возрастет еще значительнее.
Очень сильно на скорость компиляции влияет количество светящихся текстур, т.е. текстур, излучающих свет. Если Вы используете светящиеся текстуры, то при компиляции программой HLRAD, можно будет заметить существенное увеличение количества источников света (Direct Lights). Например, может быть так, что у Вас на карте используется всего 20 лампочек и несколько светящихся текстур, тем не менее количесво Direct Lights будет около 1000 или даже больше. Конечно же, это существенно замедлит компиляцию на компьютерах с малым количеством оперативной памяти, так как светящие текстуры используют в несколько раз больше памяти, нежели обычные иточники света (light, light_spot и light_environment).
Вывод: не увлекайтесь светящимися текстурами и не размещайте очень много разнообразных (как по цвету и мощности света, так и по состоянию: мигающая, обыная, выключаемая) лампочек в одном месте карты.
Ускорение просчета освещения
Как Вы должно быть уже знаете из предыдущих статей Учебника, компиляцию можно проводить двумя способами: быструю с щадящими параметрами и полную с настройками на максимальное качество. Повторяться не будем. Напомним только, что при тестовой компиляции можно указать для компилятора HLRAD параметр -chop 128 и при этом убрать параметр -extra. Это заметно ускорит компиляцию на обширных картах. Так же можно вообще отказаться от просчета освещения (HLRAD) и оптимизации карты (HLVIS), если компиляция действительно тестовая и служит только для проверки работоспособности энтити-объектов и таймингов карты, т.е. проверки времени встречи команд в разных местах.
Очень полезным может оказаться параметр -incremental для все того же компилятора HLRAD. Этот параметр при первой компиляции и, соответственно, при первом просчете освещения создает файл с информацией об освещении карты. Размер файла будет зависеть от размеров карты, но обычно он занимает нескольких десятков мегабайт (до 100-150). При повторной компиляции с этим же параметром, утилиты ZHLT найдут ранее созданный файл и пропустят некоторые требовательные к ресурсам операции освещения. Данный метод позволяет существенно уменьшить время полной (самой качественной) компиляции больших карт.
NetVIS: или компилируем с другом
Еще несколько ускорить компиляцию поможет проведение операции по оптимизации карты вместе с другом. Если Вы хотите использовать эту возможность, то вместо компилятора HLVIS следует запускать NetVIS. Тогда один из компьютеров (допустим, Ваш) будет сервером, а компьютер друга — клиентом. При наличии очень большой (комплексной) карты время компиляции может быть существенно уменьшено.
Еще не все используют ZHLT!
К великому сожалению, это так... Не все мапперы знают про компиляторы Zoner's Half-Life Tools и продолжают использовать стандартные устаревшие компиляторы. Это тем более удивительно, что в интернете и у нас на сайте постоянно упоминаются именно ZHLT, как самые лучшие компиляторы.
В качестве заключения
Конечно же, время компиляции карты очень сильно зависит от мощности компьютера, но и на слабых компьютерах вполне возможно создавать очень качественные карты. Вспомните, какие компьютеры были осенью 1999 года, когда был создан De_Dust или весной 2001 года, когда появился De_Dust2. Разве обязательно делать огромную карту, ждать часами ее компиляции, а потом разочароваться из-за того, что в эту карту никто не играет?