Базовая настройка DEF-файла

Def-файл (definition) - это текстовый документ, в котором прописаны все необходимые настройки и свойства модели.

Основные свойства

Подключить описания основных свойств юнита в его .def файл можно с помощью инструкций include и списка свойств в блоке {props [...]}. Общие описания свойств юнитов находятся в папке main\scene\properties, файлы с расширениями .ext и .inc:

Шаблон подключения основных свойств юнита:

(include "/properties/[type_name].ext")
(include "/properties/shadow/[type_shadow].inc" scale(data))
(include "/properties/selection/[type_selection].inc" scale(data))
{props [property list]}
Файл
Описание

[type_name].ext

Файлы, содержащие базовые описания основных видов техники:

  • airborne.ext

  • cannon.ext

  • car.ext

  • armoredcar.ext

  • moto.ext

  • tank.ext

  • marine.ext

  • railway.ext

  • trailer.ext

Каждый из указанных файлов включает в себя описание vehicle.ext

shadow/[type_shadow].inc

Описание отбрасываемой тени. Вызов инструкции происходит с указанием значения аргумента scale для задания размеров тени

selection/[type_selection].inc

Описание спрайта выделения юнита (селектора):

  • airborne.inc

  • cannon.inc

  • vehicle.inc

  • vehicle_elongate.inc

Вызов инструкции происходит с указанием значения аргумента scale для задания размеров селектора.

Примеры включения основных свойств в .def файл юнита техники

Для машин:

{game_entity
    (include "/properties/car.ext")
    (include "/properties/shadow/tank.inc" scale(1.0))
    (include "/properties/selection/vehicle.inc" scale(1.1))
    {props "vehicle" "car" "wheeled" "windowed" "truck" "vision_lev03"}
}

Для танков:

{Entity
    (include "/properties/tank.ext")
    (include "/properties/shadow/tank.inc" scale(1.0))
    (include "/properties/selection/vehicle.inc" scale(1.1))
    ("bone_rotator")
    {props "medium" "turret_rotator" "vision_lev05"}
}

Для мотоциклов:

(include "/properties/moto.ext")
(include "/properties/shadow/moto.inc" scX(0.5) scY(0.6) psfX(-7) psfY(0))
(include "/properties/selection/vehicle.inc" scale(0.7))
{props "explosion_throw_crew" "turn_over" "vision_lev00"}

Чтобы соориентироваться, какие именно файлы и теги необходимо вписать в .def настраиваемой модели, можно посмотреть набор включений в .def файлах аналогичных моделей техники.

Привязка 3д-модели

3д модель техники включается в файл .def с помощью блока extension. В качестве значения параметра используется имя .mdl файла, взятое в кавычки. Название .mdl файла для каждого юнита уникально.

{extension "model_name.mdl"}

Файл model_name.mdl получается в результате экспорта модели в ресурсы игры.

Привязка 3д-модели на примере немецкого грузовика Opel Blitz
{extension "opel_blitz.mdl"}

Описание волюмов

Экипаж

Включение экипажа

Подключение описания экипажа происходит с помощью вызова нужной инструкции define, либо с помощью блока {extension}, в котором в качестве значения необходимо указать имя соответствующего SDL файла, содержащего описание экипажа.

("name_crew_define")
{extension "name_crew.ext"}
Примеры включения описания экипажа в .def юнита

Включение экипажа с помощью файла .ext

{extension "crew.ext"}

Включение экипажа вызовом инструкции define

("crew_4_human_extended")

Анимации посадки экипажа в технику

Блок параметра boarder отвечает за анимации посадки (и высадки) членов экипажа на технике, а также за их позу. Для каждого члена экипажа (командир, стрелок, пассажир, заряжающий и т.п.) и типа техники указывается свое значение анимации и позы.

Пример блока boarder
{boarder
    {anm "passenger"
        {forward 
            {begin "board_body"} 
            {end "seat_passenger"}
        }
        {reverse 
            {end "emit_body" 1}
        }
    }
    {anm "gunner"
        {forward 
            {end "pose_61K_gunlayer_right" 10}
        }
        {reverse 
            {end "emit_tank_1"}
        }
    }
    {anm "charger"
        {forward 
            {begin "board_LowTank_stand"} 
            {end "pose_61K_gunlayer_right" 10}
        }
        {reverse 
            {end "emit_tank_1"}
        }
    }
}

Чтобы подставить нужную анимацию конкретному члену экипажа необходимо название анимации вставить в значение begin (посадка) и end (высадка)

Пример назначения анимаций посадки и высадки для стрелка №1
{anm "gunner1"
    {forward 
        {begin "board_SdKfz251-1"} 
        {end "seat_sd251_mgunner"} 
        {base "doors"}
    }
    {reverse 
        {end "emit_body" 1} 
        {base "doors"}
    }
}

В блоке параметра base прописана анимация открытия дверей\люка на технике. Как только будет использована анимация gunner1, на технике запустится анимация doors.

Размещение экипажа по местам

Видимые пассажиры

Описание размещения экипажа осуществляется через вызов соответствующих инструкции define. При вызове инструкции передаются нужные значения аргументов.

Примеры описания логики размещения экипажа
("crew_human" place(gunner1) bone(gunner1) door(emit3) animation(gunner))
("crew_human" place(gunner2) bone(gunner2) door(emit4) animation(gunner))
("crew_human" place(gunner3) bone(gunner3) door(emit3) animation(gunner))
("crew_human" place(gunner4) bone(gunner4) door(emit4) animation(gunner))
("crew_human" place(seat1) bone(seat01) door(emit3) animation(passenger))
("crew_human" place(seat2) bone(seat02) door(emit4) animation(passenger))
("crew_human" place(seat3) bone(seat03) door(emit3) animation(passenger))
("crew_human" place(seat4) bone(seat04) door(emit4) animation(passenger))

Инструкция "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 - это испортит анимацию люков при посадке экипажа.

Пример описания экипажа танка
("crew_human" place(gunner) door1(emit1) door2(emit2) visor(main))
("crew_human" place(driver) door1(emit0) door2(emit0) visor(driver))
("crew_human" place(charger) door1(emit1) door2(emit2) visor(main))
("crew_human" place(commander) door1(emit1) door2(emit2) visor(back))
("crew_human" place(gunner3) door1(emit1) door2(emit2) visor(main))

Стрелок gunner3 - невидимый

Включения

Инвентарь

Включение описания инвентаря осуществляется с помощью блока параметра {extender "inventory"}

{extender "inventory"
    {box
        {item "item_name" [data]}
    }
}
Пример включения описания инвентаря
{extender "inventory"
    {box
        {item "ammo bullet90 ap usa std" 45}
        {item "ammo bullet90 fg usa std" 25}
        {item "browning" filled {user "mgun"}}
        {item "ammo hmgun" 550}
        {item "ammo mgun" 2500}
    }
}

Номер борта

{extender "enumerator"}

Камуфляж

Не обязательный параметр. Включение описания камуфляжа происходит при помощи параметра extension. В качестве значения параметра используется имя файла, содержащего описание камуфляжа camouflage.ext

{extension "camouflage.ext"}

Файл camouflage.ext должен находиться в папке с файлом модели.

Пример содержимого файла camouflage.ext
;SDL
{extender "bodykit"
    {"camouflage"
        {delay 10}
        {"leafbush_01b_scale07" "turret"}
        {"leafbush_01b_scale05" "visor1"}
        {"leafbush_01b_scale07" "visor2"}
        {"leafbush_01b_scale07" "engine"}
        {"leafbush_01b_scale07" "seat01"}
        {"leafbush_01b_scale07" "seat02"}
    }           
}

leafbush_01b_scale07, leafbush_01b_scale05 - названия модели камуфляжа

turret, visor1, visor2, engine... - название костей модели техники, на которые линкуется указанная модель камуфляжа

Зрение

Подключение зрения юнита осуществляется с помощью блока sensor, который содержит блоки с параметрами визора {visor [data]}, типа зрения {vision [data]} и кости, к которой крепится визор {bone [data]}. Значениями параметров являются имена визора, типа зрения и кости, заключенными в кавычки.

Шаблон описания зрения юнита:

{Sensor
    {visor "[visor_name]"
        {vision "[vision_name]"}
        {bone "[bone_name]"}
    }
}

Описание визоров юнита техники может быть вынесено для удобства в отдельный файл и подключено в .def с помощью параметра extension. Значением параметра является имя файла, содержащего описание визоров юнита, заключенного в кавычки.

{extension "sensor.ext"}
Пример содержимого файла sensor.ext
;SDL
{sensor
    {visor "main"
        {vision "field_gun_main"}
        {bone "visor"}
    }
    {visor "view-around"
        {vision "field_gun_around"}
        {bone "basis"}
    }
}

Файл sensor.ext должен находиться в папке с файлом модели.

Вооружение

Блок {Weaponry} содержит описание элементов вооружения юнита

Пример описания вооружения

{Weaponry
    ("restore_ik_time")
    {place "gun"
        {RestoreIKAfterAim}
        {weapon "90mm_t15" filled}
        {gunner "gunner"}
        {charger "gunner"}
        {abm_tank_cannon}
        {basic}
    }
    {place "mgun"
        {type "aa"}
        {gunner "gunner2"}
        {charger "gunner2"}
        {LinkBone "mgun_aa"}
        {LinkAnimation "off"}
        {abm_mgun_heavy}
        {basic}
    }
    {place "mgun2"
        {type "coaxial"}
        {weapon "browning_m19" filled}
        {foresight "foresight5"}
        {gunner "gunner"}
        {charger "gunner"}
        {sequential_aim}
        {abm_mgun}
        {basic}
    }
    {place "mgun1"
        {type "hull"}
        {weapon "browning_m19" filled}
        {foresight "foresight4"}
        {gunner "driver"}
        {charger "driver"}
        {abm_mgun}
        {basic}
    }
}

Установка пулеметов

Пулеметы не являются частью мэша модели, поэтому в файле 3d max их нет.

Описание пулеметов задается в .def файле юнита техники с помощью вложенного блока {place "mgunN"} блока {Weaponry}. Каждому пулемету соответствует свой блок {place "mgunN"}, где N - номер пулемета.

Если пулемет не один, то прописывается соответствующее количество, с соблюдением названий костей прилинковки, экипажа и прочих параметров:

Лимиты угла наклона и поворота пулеметов

Описание ТТХ юнита

В .def юнита техники необходимо вписать ТТХ параметры и их значения:

  • вес,

  • описание шасси,

  • максимальная скорость,

  • разгон,

  • скорость поворота,

  • объем топливного бака и др.

Значения параметров настраивают в соответствии с концепцией игрового дизайна. В оригинальных играх серии Men of War геймдизайнеры настраивают эти параметры в соответствии с реальными характеристиками техники.

Шасси

Гусеницы

Скорость вращения гусениц задается значением аргумента len. Чем выше значение - тем гусеницы крутятся медленнее.

Настройка шасси и подвесок

Настройка щитов

Last updated