Школа counter-strike - частина як прискорити компіляцію

Частина 3.11 Як прискорити компіляцію?

У цьому матеріалі ми розповімо про всі можливі методи прискорення компіляції рівня.

потужність комп'ютера

Насамперед, час компіляції залежить від герцовкі процесора і кількості вільної оперативної пам'яті. Чим більше частота і кількість пам'яті - тим краще. Якщо оперативки пам'яті мало, то починає використовуватися пам'ять віртуальна (SWAP-файл). І чим швидше жорсткий диск передає дані з SWAP-файлу, тим швидше завершиться компіляція.

Що стосується конкретних цифр, то, по досвіду, для компіляції середньої карти типу De_Inferno необхідно близько 384 Мб оперативної пам'яті. Краще 512 Мб. Для рівнів крупніше, пам'яті може знадобитися ще більше. В цілому, чим більше оперативки у вас є, тим швидше завершиться компіляція.

Уповільнення компіляції через брак пам'яті

Іноді можливо спостерігати таку картину: компіляція йде спритно, доходить до 90 відсотків, а потім наче застопорівают і кожен% долається мало не годинами - це явний симптом нестачі оперативки. При цьому починає активно використовуватися SWAP-файл.

Найчастіше даний випадок починається на операції MakeScales і SwapTransfers компілятора HLRAD.EXE. Виправити цю ситуацію можна радикальним спрощенням рівня (скороченням його розмірів і деталізації) або установкою додаткової оперативної пам'яті. Вибирайте з даних 2-х варіантів за своїми можливостями. Або ж компілюйте свій рівень у одного :-)

Зупинка компіляції через брак пам'яті

А буває, що закінчується не тільки оперативка, але і SWAP-файл і тоді компілятори Зонера видадуть приблизно таку помилку: «HLRAD.EXE failed to allocate a block of memory». Вихід із ситуації вам вже відомий: збільшення оперативки, збільшення SWAP-файлу, зменшення карти або компіляція у товариша :-)

Програма для компіляції

Скажіть «НІ» компіляції через Хаммер або програми-оболонки для компіляторів. Якщо у вас малопотужний ПК, використовуйте для компіляції виключно * .BAT файл. Не зайвим буде перед процесом компіляції прибрати всі програми з автозавантаження, збільшити розмір файлу підкачки і перезавантажитися і, вже, потім приступайте до компіляції.

комплексність рівня

Під словом «комплексність» рівня слід розуміти спільність його розмірів і складність внутрішньої будови. Наприклад, комплексними картами є досить відомі: De_Laguna, Cs_Shogun, De_Volare тощо. На якомусь PIII-600 при 128 Мб пам'яті ці рівні будуть компілюватися цілодобово!

Великі відкриті простори, достаток скель, велике число джерел світла (light або light_spot) - все це значно збільшує час компіляції. Разом з тим, без оптимізації, рівні, подібні перерахованим вище, будуть сильно гальмувати на будь-якому комп'ютері просто тому, що древній движок HL не здатний малювати карти подібних розмірів і такої комплексності.

Щоб хоч якось прискорити процес компіляції великих рівнів потрібно, по-перше, зафарбовувати ВСЕ невидимі гравцем поверхні текстурами SKY (ці поверхні - це дахи будинків, зворотні сторони зборів і стін, дно рівня), по-друге, потрібно намагатися робити дно рівня і зовнішні стіни плоскими (без вилучень і ям), найкраще, щоб стіни і дно рівня утворювали безперервну поверхню. 1-я рекомендація прискорить прорахунок освітленості карти, так як при компіляції SKY-текстури просто-напросто не прораховуються на висвітлення; 2-я рекомендація стане в нагоді, якщо ви будуєте небо рівня навколо 1-ої великою коробкою, в даному випадку між небом і рівня не буде пустот, що прискорить оптимізацію рівня програмою-компілятором HLVIS.EXE.

джерела світла

Уповільнення компіляції також викликає велике число джерел світла, зібраних поруч, в одному місці. А якщо вони ще будуть мигати або вимикатися, то час компіляції виросте ще більше.

Дуже різко (в сторону зростання) на швидкість компіляції впливає число світних текстур, тобто текстур, що випромінюють світло. Коли ви задієте світяться текстури, то при компіляції програмою-компілятором HLRAD.EXE, буде помітно збільшення числа джерел світла (Direct Lights). Наприклад, можливий такий випадок, що на карті використовується всього 15 лампочок (об'єктів light) і кілька світних текстур, і, тим не менш, чіслоо Direct Lights буде близько 500 і більше. Без всякого сумніву, це значно сповільнить компіляцію на ПК з невеликою кількістю оперативки, тому що світяться текстури споживають в декілька разів більше пам'яті, ніж звичайні джерела світла.

Прискорення прорахунку освітленості

Як ви напевно знаєте, компіляцію можна проводити 2-мя манерами: тестову з щадними опціями і остаточну з настройками параметрів на найвищу реалістичність. Повторюватися не будемо. Нагадаємо тільки, що при неостаточної компіляції можна встановити для програми-компілятора HLRAD.EXE параметр -chop 128 і разом з тим прибрати параметр -extra. Це значно прискорить компіляцію на великих картах. Так само можливо взагалі відмовитися від прорахунку освітленості рівня (компілятор HLRAD.EXE) і оптимізації рівня (компілятор HLVIS.EXE), якщо компіляція справді тестова.

Корисним може стати параметр -incremental для програми-компілятора HLRAD.EXE. Даний параметр при 1-ої компіляції створює файл з інформацією про освітленості рівня. Розмір файлу зависет від розмірів рівня, але, в більшості випадків, він займає кілька десятків мегабайт (до ста - ста п'ятдесяти). При повторній компіляції з даними параметром (-incremental), утиліти Зонера знайдуть цей файл і кілька вимогливих до ресурсів операції освітлення. Цей спосіб дозволяє значно скоратіть час повної компіляції великих рівнів.

NetVIS - або компілюємо разом з другом

Також скоротити час компіляції допоможе проведення операції по оптимізації карти разом з другом. Тут замість компілятора HLVIS.EXE слід використовувати NetVIS. Тоді один з ПК, припустимо, ваш - буде сервером, а ПК одного - клієнтом. Якщо у вас великий, комплексний рівень, то час компіляції може бути значно скорочено.

В якості висновку

Схожі статті