Набор ускоренных x32 компиляторов v3.0 для ЧН-ЗП СДК.




ЧТО НОВОГО
v3.0
исправлены вылеты при сетевой компиляции
обновлена библиотека FreeImage.dll до v3.15.3.0

v2.0
пофиксен незапуск на системах с неустановленным Visual C++ 2008 
добавлен переключатель обходить/не обходить инвалидные фейсы

v1.0
опциональный обход инвалидов (by drvoodoo-guru)
возможность компилить по сети как для xrlc, так и для xrdo_light
возможность установки как в ЗП СДК, так и в ЧН СДК
добавлен параметр -nosmg для фикса глюков с тенями (by FL!NT)
основан на самом быстром ЗП-компиляторе




УСТАНОВКА
Запускать стандартную компиляцию только с батников !xrLC2010_single.cmd/!xrDO2010_single.cmd.
Запускать сетевую (на нескольких компьютерах, объединенных в сеть) компиляцию батниками xr*net.cmd
Если сетевая компиляция не нужна - стереть editors\xr*net.cmd.

Пример запуска: xrLC2010_single.cmd имя_карты (или вписать имя_карты в батник вместо %1)







РЕКОМЕНДАЦИИ НЕПОСРЕДСТВЕННО ПО КОМПИЛЯЦИИ
Изначально рекомендуется запустить !xrLC2010_switcher.cmd и выбрать вариант НЕ обходящий инвалидные фейсы.
Потом пытаться компилить карту. Если компилятор вылетит с сообщением в логе об инвалидных фейсах - запустить LevelEditor, открыть там эту карту,
затем в меню "SCENE" выбрать "Compile"- "Import Error List" и загрузить полученный после неудачной компиляции build_*.err
После этого на карте отобразятся "самые глючные" места, из-за которых вылетает компилятор. По возможности постарайтесь их исправить, 
снова пребилдить проект и снова пытаться компилировать. Если компилятор все равно вылетает с сообщением в логе об инвалидных фейсах,
то тогда уже в xrLC_switcher.cmd выбирайте вариант обходящий инвалидные фейсы, и компилируйте снова. Этот этап точно будет пройден,
но вероятность последующих вылетов с сообщениями о нехватке памяти или глюков на уровне возрастет.

Если компилятор вдруг вылетает, всегда смотрите logs\xrlc_*.log, там может быть подсказка из-за чего или на какой стадии.







ЧАСТИЧНАЯ ПЕРЕКОМПИЛЯЦИЯ
Если вы скомпилировали уровень, но необходимо внести мелкие правки, не связанные с графикой,
например где-то заменить материал у объекта или добавить невидимые фейк-плоскости,
то это можно сделать без повторной полной перекомпиляции карты. Для этого:
Не забываем сохранить где-нибудь свой первоначально скомпилированный уровень,
В LevelEditorе вносим необходимые мелкие правки, заново пребилдим проект, затем запускаем компиляцию.
Проходим все стадии *.cform
Прерываем (закрываем компилятор) на стадии build UV mapping или позже.
На всякий случай рекомендуется еще нажать Ctrl-Alt-Del и убедиться, что xrlc точно выгружен из памяти.
Готовый новый level.cform подставляем в свой уровень.







ОПИСАНИЕ НЕКОТОРЫХ КЛЮЧЕЙ КОМПИЛЯТОРА
-f имя_карты (обязательный параметр при компиляции)
-? (минихелп)
-h (минихелп)
-o (меню доп. опций - работает только в паке тч-компилей, О реальной пользе меню см. ридми к паку тч-компилей)
-gi (global illunination - обсирает картинку на dx8 и сильно тормозит компиляцию)
-nosun (disable sun-lighting) - подойдет для подземных лок
-noise (no isolated vertices) - помогает при вылетах на финальных стадиях компиляции
-premul (вроде premulated alpha - возможно что-то связанное с альфа-каналом текстур лайтмапов)
-keep_temp_files (не удалять временные файлы - для зп-компилей)
-net   (связана с компиляцией по сети - для зп-компилей xrlc и xrdo_light, см. главу СЕТЕВАЯ КОМПИЛЯЦИЯ)
-nosmg (отключение smooth groups - этот параметр рекомендуется при использовании чн/зп компилей если происходят глюки с тенями/ломаными плоскостями)
-nolog (не создавать файл лога)
-silent (не выводить таблички при завершении работы - для зп-компилей xrlc и xrdo_light при компиляции нескольких карт подряд, например)






=========================================================================================================

КОМПИЛЯЦИЯ СЛОЖНОЙ ГЕОМЕТРИИ НА СЛАБОМ ЖЕЛЕЗЕ и 32-БИТНЫХ СИСТЕМАХ
Подразумевается система с не менее чем 2 gb оперативной памяти.
Подразумевается борьба с вылетами по "Out of memory."
Даже без проблем скомпилировав карту на draftе, можно получить такой вылет при компиляции на High.



МЕТОД 1 - использование ключа /3gb в XP sp2/sp3
Метод проверен на системе с 2gb RAM, winXP sp3 32 bit, размер файла подкачки был установлен "по выбору системы".
Редактируем файл boot.ini (предварительно в свойствах файла снимаем атрибут read only)
В секции [operating systems] видим строчку вида:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional RU"   /noexecute=alwaysoff /fastdetect /nopae /usepmtimer

Дублируем её и добавляем в конец ключ /3gb, а внутрь кавычек слово xray, чтобы не путаться.
В итоге получится нечто вроде:

[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional RU"   /noexecute=alwaysoff /fastdetect /nopae /usepmtimer
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional RU xray"   /noexecute=alwaysoff /fastdetect /nopae /usepmtimer /3gb

Внимание: здесь приведён лишь пример с рекомендациями. У каждой системы изначальная строчка будет своя.
Перезагружаемся. Выскочит меню. Выбираем "Microsoft Windows XP Professional RU xray". Компилим.
В этом режиме на некоторых машинах XP может глючить или вообще не загрузиться. На одной системе в таком режиме в ТЧ fps упал в два раза.


МЕТОД 2 - увеличение размера свап-файла на win7 x64
Требуется или изначально установленная windows7 x64, или загруженная с DVD WIN7 Live x64 (можно найти в интернете/на торрентах/рутрекере).
Метод проверен на системе с 2gb RAM, WIN7 Live x64 (метод обеспечил больше доступной памяти, чем предыдущий с XP).
Фишка заключается в принудительном выставлении файла подкачки не менее 10 gb.

Кликнуть правой Кнопкой мышки на "Мой компьютер" - "Свойства" - "Дополнительные параметры системы",
или "Пуск"-"Настройка"-"Панель управления"-"Система"-"дополнительные параметры системы".

откроется окно "Свойства системы"
там "дополнительно" - "Быстродействие" - "Параметры":

"Визуальные эффекты" - выбрать "Обеспечить наилучшее быстродействие"
"Дополнительно" - "Виртуальная память" - "Изменить",
откроется окно "Виртуальная память"
убрать галочку "Автоматически выбирать объем файла подкачки"
выбрать "Указать размер", в полях "Исходный размер" и "Максимальный размер" вписать 10000
нажать кнопку "Задать"
нажать кнопку "Ok"
нажать кнопку "Применить","Ok","Ok"

Компилим.




МЕТОД 3 (не проверен) - использование ключа "increaseuserva 3072" для Vista 32bit/Win7 32bit 
Только для опытных пользователей!
Пуск-выполнить-cmd (запускaть от имени Администратора)
ввести команду:
bcdedit /set increaseuserva 3072
Перегрузиться.

=========================================================================================================







СЕТЕВАЯ КОМПИЛЯЦИЯ
xrLC2010_net.cmd и xrDO2010_net.cmd позволяют собирать одну карту сразу на нескольких компьютерах, объединенных в единую локальную сеть.
Важное нововведение - возможность компиляции уровня на нескольких компьютерах одновременно.
Выполняется она с помощью xrLC и дополнительных приложений. Один компьютер выполняет роль "координатора", остальные, "агенты", работают с определенными им задачами.
Для простоты работы к SDK приложены уже настроенные исполняемые файлы, с которыми достаточно лишь указать имя уровня и IP координирующего компьютера.
Смысл использования такой компиляции понятен - она позволяет собирать сложные уровни с очень высокими установками качества за куда меньшее время, чем на одном пк.
Разумеется, со времен xrLC ТЧ, у которого уходило до недели чистого времени на сборку крупного уровня в высоком качестве, скорость работы компилятора возросла до четырех раз,
но время компиляции всё равно не назовешь быстрым.

1. На всеx компьютерах в сети отключаем файерволы/брандмауэры и паузим все антивирусы/любые другие тормозящие процессы.
2. На все компьютеры в сети копируем одинаковый СДК (с уже предустановленным данным набором компиляторов).
3. Выбираем для себя, какой компьютер будет главным (координатором), а все остальные будут агентами.
4. На главном компьютере-координаторе узнаём его ip-адрес. Пуск-выполнить-cmd-ipconfig
5. На главном компьютере-координаторе запускаем xrLC2010_net_settings.cmd, вписываем его ip-адрес в coordinator_ip= и сохраняем.
6. На главном компьютере-координаторе запускаем xrLC2010_net_agent.cmd

7. На каждом компьютере-агенте запускаем xrLC2010_net_settings.cmd, вписываем ip-адрес координатора в coordinator_ip= и сохраняем.
8. На каждом компьютере-агенте запускаем xrLC2010_net_agent.cmd
9. На главном компьютере-координаторе запускаем xrLC2010_net_coordinator.cmd, разворачиваем его из трея.
   В его списке должны появиться все агенты.

10. На главном компьютере-координаторе запускаем: xrLC2010_net.cmd имя_карты
11. Для компиляции травы на главном компьютере-координаторе запускаем: xrDO2010_net.cmd имя_карты

Примечание: вместо запуска "xrLC2010_net.cmd имя_карты" и "xrDO2010_net.cmd имя_карты" можно имя_карты напрямую прописать в батник вместо %1.

Необходимо подчеркнуть, что при забитом канале могут быть потери пакетов, и как результат некорректная(битая) компиляция,
желательно держать канал не занятым, также важен параметр maxSendAheadTasks= .
Для локалки рекомендуется значение 10, для компиля через интернет-соединение 5.
Обязательно не забудьте предварительно открыть необходимые программе порты на вашей машине (4100-4200) и настроить корректно роутер и брандмауэр.
Или вообще отключить все брандмауэры, чтобы не мешали.






ПАКЕТНАЯ КОМПИЛЯЦИЯ
Можно за один раз сразу запустить компиляцию нескольких карт подряд, и/или чтобы сразу после геометрии (xrlc) автоматически запускалась компиляция травы (xrdo).
Редактируем !xrLC2010_packet_example.cmd, вписываем имя своей карты. Если надо, подряд добавляем новые строчки с новыми картами, например:

@start /wait bin\compilers2010\xrLC.exe -nosmg -f имя_карты -silent
@start /wait bin\compilers2010\xrDO_light.exe -f имя_карты -silent
@start /wait bin\compilers2010\xrLC.exe -nosmg -f имя_карты2 -silent
@start /wait bin\compilers2010\xrLC.exe -nosmg -f имя_карты3 -silent







О КОМПИЛЯЦИИ КАРТ ПОД ФОРМАТ ТЧ (для теней чернобыля или билдов серии 22xx)
Компилируем ЗП-компилятором как обычно, но после компиляции необходимо будет поработать над лайтмапами получившегося уровня.

Новый метод (меняем местами канал альфа и RGB):
lmap*_1.dds - не трогаем
lmap*_2.dds - через paint.net меняем прозрачность с 255 до 200, сохраняем в формате dxt5 без мипмапов
Затем их же открываем в фотошопе (Adobe photoshop + Nvidia dds plugin):
заходим в пункт "Изображение" - "Внешний канал"
Канал: выбираем Альфа 1
Наложение: выбираем Нормальный (в теории можно проверять и другие варианты)
Cохраняем в формате dxt5 без мипмапов.
Очередность должна соблюдаться - сначала paint.net, потом Photoshop. Если лайтмапы в последствии снова обрабатывать пейнтом, то не исключены цветные глюки-пятна.


Старый метод (может оставлять артефакты):
lmap*_1.dds - не трогаем
lmap*_2.dds - через paint.net снижаем контраст на 15 единиц и прозрачность с 255 до 50, сохраняем в формате dxt5 без мипмапов


Чтобы воллмарки (всякие пятна на стенах/асфальте) в тч в dx8 не глючили, надо:
shaders\r1\effects_wallmarkmult.s и shaders\r1\effects_wallmarkset.s позаимствовать из чн/зп.







О ТРАВЕ
Изначально в компиляторах травы (xrdo_light) наблюдается глюк, что получившаяся в результате трава,
уже в самой игре чернеет в удалении от игрока и сильно контрастирует с террейном. Но это поправимо:
В папке с полученным уровнем берем build_details.dds, и через paint.net пересохраняем как DXT1 с мип-мапами.







О ТЕРРЕЙНЕ
Текстуру террейна (находится в папке с уровнем в подпапке terrain) иногда тоже приходится фиксить - снижать на треть saturation и увеличивать прозрачность.
Увеличение прозрачности террейна также снижает яркость модели игрока на dx8.
Если террейн кажется слишком светлым, рекомендуется через paint.net повысить его прозрачность c 255 до 200-150. Сохранять как DXT5 без мип-мапов.
Но будьте внимательны, глюки не исключены.







МЕТОД ПЕРЕНОСА ЛОКАЦИЙ ИЗ РАЗНЫХ ВЕРСИЙ SDK

Выделить все объекты (tools -> selection -> select all).Сохраняем их в файл (file -> save selection as). Всё, сохранили, только не забудьте под каким именем вы его сохранили и главное где.
Теперь открываем другую версию X-Ray SDK. А теперь делаем так (File -> open selection) и выбираем раннее сохранённый файл. Всё, наши объекты загрузились в сцену.
То же самое повторяем для light, glow, и т.п.

О ФОРМАТЕ *.thm ДЛЯ ТЧ
ТЧ, начиная с версии 1.0004, поддерживает thm-ки от SDK 04/05/06/07.
Формат является приоритетным, то есть "перекрывает" настройки для аналогичных текстур из textures.ltx, если таковые там имеются.

О ПЕРЕВОДЕ *.thm из SDK ТЧ в формат SDK 05/06/07
Воспользоваться утилитой thmParser




ЕСЛИ LevelEditor ДОЛГО ЗАПУСКАЕТСЯ
LevelEditor всегда при запуске сканирует папки с текстурами о объектами. Если, например, в rawdata\objects число файлов измеряется тысячами, то могут возникнуть тормрза.
Совет: держите объекты неиспользуемых декомпилированных уровней в отдельных 7zip-архивах, или же перед запуском LevelEditorа заранее переносите папки с этими объектами вне SDK.
Если тысячами измеряется число файлов-объектов нужного уровня, то делаем следующее: переносим папку с этими объектами вне SDK, запускаем LevelEditor, сворачиваем его и возвращаем папку с этими объектами обратно в SDK. Загружаем уровень.







MacroN