Def-файл (definition) - это текстовый документ, в котором прописаны все необходимые настройки и свойства модели.
Основные свойства
Подключить описания основных свойств юнита в его .def файл можно с помощью инструкций и списка свойств в блоке {props [...]}.
Общие описания свойств юнитов находятся в папке main\scene\properties, файлы с расширениями .ext и .inc:
Чтобы соориентироваться, какие именно файлы и теги необходимо вписать в .def настраиваемой модели, можно посмотреть набор включений в .def файлах аналогичных моделей техники.
Привязка 3д-модели
3д модель техники включается в файл .def с помощью блока extension.
В качестве значения параметра используется имя .mdl файла, взятое в кавычки.
Название .mdl файла для каждого юнита уникально.
{extension "model_name.mdl"}
Файл model_name.mdl получается в результате экспорта модели в ресурсы игры.
Привязка 3д-модели на примере немецкого грузовика Opel Blitz
{extension "opel_blitz.mdl"}
Описание волюмов
Экипаж
Включение экипажа
("name_crew_define")
{extension "name_crew.ext"}
Примеры включения описания экипажа в .def юнита
Включение экипажа с помощью файла .ext
{extension "crew.ext"}
Включение экипажа вызовом инструкции define
("crew_4_human_extended")
Анимации посадки экипажа в технику
Блок параметра boarder отвечает за анимации посадки (и высадки) членов экипажа на технике, а также за их позу.
Для каждого члена экипажа (командир, стрелок, пассажир, заряжающий и т.п.) и типа техники указывается свое значение анимации и позы.
В блоке параметра base прописана анимация открытия дверей\люка на технике.
Как только будет использована анимация gunner1, на технике запустится анимация doors.
Размещение экипажа по местам
Видимые пассажиры
Описание размещения экипажа осуществляется через вызов соответствующих инструкции define. При вызове инструкции передаются нужные значения аргументов.
Инструкция "crew_human" вызывается для каждого из членов экипажа, определяя для каждого стрелка или пассажира его кость места размещения в технике и кость посадки в технику.
place(gunner№)- стрелки
place(seat№) - пассажиры
bone(gunner№) - кости размещения стрелков
bone(seat№) - кости размещения пассажиров
emit№ - кости посадки в технику
Невидимые пассажиры
Если пассажиров в машине не видно (например, они скрыты под тентом), то вызывается инструкция "passenger_N_human_invisible", где значение N соответствует количеству пассажиров.
Пример вызова инструкции для невидимых пассажиров
Для 10 пассажиров, которые скрыты под тентом
("passenger_10_human_invisible")
Особенности описания экипажа танка
Для членов экипажа танков инструкция "crew_human" вызывается с указанием значения аргумента place, которое соответствует роли члена экипажа:
commander
charger
driver
gunner
Значения аргумента place для дополнительных стрелков:
gunner2 - видимый стрелок; например, пулеметчик в башне;
gunner3/gunner4 и так далее - невидимые стрелки в танке.
Если для невидимого стрелка задать значение gunner2 - это испортит анимацию люков при посадке экипажа.
Не обязательный параметр.
Включение описания камуфляжа происходит при помощи параметра extension. В качестве значения параметра используется имя файла, содержащего описание камуфляжа camouflage.ext
{extension "camouflage.ext"}
Файл camouflage.ext должен находиться в папке с файлом модели.
leafbush_01b_scale07, leafbush_01b_scale05 - названия модели камуфляжа
turret, visor1, visor2, engine... - название костей модели техники, на которые линкуется указанная модель камуфляжа
Зрение
Подключение зрения юнита осуществляется с помощью блока sensor, который содержит блоки с параметрами визора {visor [data]}, типа зрения {vision [data]} и кости, к которой крепится визор {bone [data]}. Значениями параметров являются имена визора, типа зрения и кости, заключенными в кавычки.
Описание визоров юнита техники может быть вынесено для удобства в отдельный файл и подключено в .def с помощью параметра extension. Значением параметра является имя файла, содержащего описание визоров юнита, заключенного в кавычки.
Пулеметы не являются частью мэша модели, поэтому в файле 3d max их нет.
Описание пулеметов задается в .def файле юнита техники с помощью вложенного блока {place "mgunN"} блока {Weaponry}.
Каждому пулемету соответствует свой блок {place "mgunN"}, где N - номер пулемета.
Если пулемет не один, то прописывается соответствующее количество, с соблюдением названий костей прилинковки, экипажа и прочих параметров:
Лимиты угла наклона и поворота пулеметов
Описание ТТХ юнита
В .def юнита техники необходимо вписать ТТХ параметры и их значения:
вес,
описание шасси,
максимальная скорость,
разгон,
скорость поворота,
объем топливного бака и др.
Значения параметров настраивают в соответствии с концепцией игрового дизайна.
В оригинальных играх серии Men of War геймдизайнеры настраивают эти параметры в соответствии с реальными характеристиками техники.
Шасси
Гусеницы
Скорость вращения гусениц задается значением аргумента len. Чем выше значение - тем гусеницы крутятся медленнее.
Настройка шасси и подвесок
Настройка щитов
Подключение описания экипажа происходит с помощью вызова нужной инструкции , либо с помощью блока {extension}, в котором в качестве значения необходимо указать имя соответствующего SDL файла, содержащего описание экипажа.