ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
|
» Explosion - разрушение кораблей | страница 1 |
 |
Страница 1 из 1 |
|
|
|
Канал Freelancer »
МОДовый отсек: «Explosion - разрушение кораблей» |
|
|
Jeider
570 EGP
    Рейтинг канала: 5(198) Репутация: 49 Сообщения: 2804 Откуда: Пенза Зарегистрирован: 17.08.2009
 |
|
Взрывы. Они в игре везде. Все что когда-либо уничтожает имеет свои параметры разрушения. Что может разрушаться? Крупные объекты в виде кораблей, соларов, астероидов и мелкие объекты в виде оборудования и частей модели этих крупных объектов. Крупные объекты имеют в своих описаниях параметр explosion_arch. Он ссылается на FX\explosions.ini. Оборудование и т.п. имеют специальный набор параметров, которые описывают их уникальный ход разрушения. Начнем с самого простого.
Разрушаемость оборудования.
Открываем инишку, например, с описанием орудий кораблей (weapon_equip.ini). Находим код:
Код: |
explosion_resistance = 1.000000 <- Сопротивление разрушению. Оно же "время жизни" детали после события hit_pts = 0
debris_type = debris_turret_large <- ссылка на тип в explosions.ini
parent_impulse = 20 <- скорость начальная
child_impulse = 80 <- скорость конечная |
Свободно манипулируя этими параметрами можно настроить разрушение турели/пушки/контреты/щитов... в общем всего того, что можно нацепить на ваш корабль когда вы его изменяете на базе.
Разрушаемость частей корабля/солара.
Теперь вспоминаем параметр [CollisionGroup] в shiparch и solararch после описания корабля. Он имеет 2 функции - описание разрушаемости и описание характеристик взрыва части модели корабля/солара. Находим код разрушаемость первой части патриота (он в самом верху стоит в инишке):
Код: |
[CollisionGroup]
obj = port fin_lod1
separable = true <- параметр указывает, что модель можно разбить во время боя. Заменится на указанный ниже Simple
parent_impulse = 240.000000 <-скорость начальная
child_impulse = 7.000000 <-скорость конечная
dmg_hp = DpPortfin
dmg_obj = li_fighter_dmg_portfin_cap
mass = 5.000000 <-масса детали когда она будет в космосе бороздить пространства
debris_type = debris_small_ship <-ссылка на тип в explosions.ini
separation_explosion = explosion_small_ship_breakoff <-ссылка на разрушение в explosions.ini при наступления момента hit_pts = 0
type = Port_Fin
hit_pts = 500
root_health_proxy = true |
Взрывается корабль и крыло отлетает от корабля с указанными параметрами. Если часть просто отсреливается, то просто загружается separation_explosion.
Теперь пошли к самым главным баранам - кораблям и прочей всякой всячине. У них все просто - ссылка через параметр explosion_arch. Поэтому сразу переходим к explosions.ini.
Так, возьмем Дефендер для примера. Его архетип ссылается на eplosion_li_elite:
Код: |
[explosion]
nickname = explosion_li_elite <-ссылка идет на этот никнейм
lifetime = 0.000000, 0.150000 <-время... почему параметра 2 не знаю, но второй должен быть больше. Может итоговое число идет случайно
process = shatter <-тип процесса. Разницы не знаю
num_child_pieces = 20 <-ограничение на число [CollisionGroup]
debris_type = debris_small_ship, 0.330000 <-тип вылетаемых частей
debris_type = debris_small_ship_short, 0.330000
debris_type = debris_small_ship_long, 0.330000
innards_debris_start_time = 0.100000 <-время старта дополненных частей
debris_impulse = 10000 <-импульс вылета дополненных частей
effect = explosion_li_elite, 0.000000 <-визуальный ALE-эффект |
Вроде бы все понятно кроме... дополнительных частей. Ага, именно они нам нужны тут больше всего. Теперь я покажу то как я поиздевался над эффектом взрыва валькирии(rh_elite):
Код: |
[explosion]
nickname = explosion_rh_elite
lifetime = 0.000000
process = shatter
debris_type = debris_small_ship, 5.330000
debris_type = debris_small_ship_short, 5.330000
debris_type = debris_small_ship_long, 5.330000
innards_debris_start_time = 0.000000
effect = explosion_rh_elite, 0.000000
debris_impulse = 50
num_child_pieces = 40
innards_debris_num = 20 <-число доп.частей
innards_debris_radius = 1 <-радиус их вылета от центра
innards_debris_object = simple_trail_parent <-ссылка на объект
[Simple]
nickname = simple_trail_parent <-ссылка чуть выше
DA_archetype = Equipment\models\weapons\no_fighter_gun.cmp <-один полигон
Mass = 10 <-масса |
Так, это дополнительные части. С ними все нормально - описаны. А теперь про эффект трейла. Нам надо посмотреть то, куда ссылается debris_type. Вот код:
Код: |
[Debris]
nickname = debris_small_ship <-ссылаемся сюды
death_method = exploding <-метод взрыва = разрушение О_о
lifetime = 2.00000, 7.000000 <- время. Видимо случайность от 2 до 7
linear_drag = 0.010000 <-линейный противовес. Т.е. это как на круиз встаешь на КЭ и тебя останавливает потихоньку
angular_drag = 0.000000, 0.000000, 0.000000 <- вращение по осям X Y Z. У нас модель вообще один полигон, так что... ну понятно))
trail = gf_explosion_debris_trail01 <-эффект трейла огонька
explosion = explosion_small_debris <- ссылка на другой взрыв
[Debris]
nickname = debris_small_ship_short
death_method = exploding
lifetime = 2.000000, 5.500000
linear_drag = 0.010000
angular_drag = 0.000000, 0.000000, 0.000000
trail = gf_explosion_debris_trail01
explosion = explosion_small_debris
[Debris]
nickname = debris_small_ship_long
death_method = exploding
lifetime = 5.000000, 15.000000
linear_drag = 0.010000
angular_drag = 0.000000, 0.000000, 0.000000
trail = gf_explosion_debris_trail01
explosion = explosion_small_debris |
А теперь я вам покажу прикол, который я еще не изменял. Видите параметр explosion у [Debris]? Находим код:
Код: |
[explosion]
nickname = explosion_small_debris
lifetime = 0.000000, 0
process = disappear
debris_type = debris_small_ship, 1.000000
innards_debris_start_time = 0.000000
debris_impulse = 500
effect = explosion_small_debris, 0.000000 |
Ни на что не смахивает? Так ведь это наш же основной взрыв! Т.е. можно сделать так, что разрушаемая часть еще ДАЛЬШЕ делится на менее разрушаемые. Я еще не пробовал, но уже пальцы сильно чешутся.
Видео примеров:
http://www.youtube.com/watch?v=cTJP-J8KbhI
http://www.youtube.com/watch?v=gfNnAf09pgQ
Последний раз редактировалось: Jeider (22:12 09-08-2011), всего редактировалось 1 раз |
|
|
goshadiamo
155 EGP
  Рейтинг канала: 3(38) Репутация: 14 Сообщения: 775 Откуда: Nemiroff Зарегистрирован: 05.04.2010
 |
|
Поделюсь своими наблюдениями
у большенства кораблей стоит
fuse = intermed_damage_smallship01, 0.000000, 400
fuse = intermed_damage_smallship02, 0.000000, 200
fuse = intermed_damage_smallship03, 0.000000, 133
и при таких фюзах параметры Simple как бэ пропускаются. В том смысле что если в Simple изменить модель обломка, то всёравно будут обломки не изменятся. Например поставить тому же дефендеру в Simple обломки от другого корабля, то при взрыве всёравно будут лететь обломки дефендера.
А у кораблей для которых есть специально написаный фюз уже учитываются параметры из Simple
Вот крузер либерти например
fuse = li_cruiser_body_fuse, 0.000000, 1
fuse = li_cruiser_burning_fuse01, 0.000000, 10825
fuse = li_cruiser_burning_fuse02, 0.000000, 5413
То сменив модель в Simple мы уже увидим другие осколки после взрыва.
зы сложно с этими осколками если свою модель запихаем в фрил. суры осколков для новых моделей ох как геморно делать, и то не всегда рабочие получаются.
|
|
|
Jeider
570 EGP
    Рейтинг канала: 5(198) Репутация: 49 Сообщения: 2804 Откуда: Пенза Зарегистрирован: 17.08.2009
 |
|
goshadiamo : |
при таких фюзах параметры Simple как бэ пропускаются. В том смысле что если в Simple изменить модель обломка, то всёравно будут обломки не изменятся. Например поставить тому же дефендеру в Simple обломки от другого корабля, то при взрыве всёравно будут лететь обломки дефендера.
А у кораблей для которых есть специально написаный фюз уже учитываются параметры из Simple
|
Ты, видимо, немного не понял принцип. Simple это всего лишь ссылки от CollisionGroup, которая заменяет модельку выбранной части корабля на поврежденную. Если фьюза нет, то игра сразу начинает запускать explosion_arch и корабль распадается. У крейсера предварительно происходит фьюз разрушения корабля. При этом все его детали получают команду "мы сдохли" и заменяются на параметры в Simple. У дефендера фьюза нет и он может получить команду "мы сдохли" только во время жизни. Т.е. принцип таков - огрызки будут отлетать только тогда, когда огрызок был получен еще во время боя. Иначе будут отлетать стандартные модели.
добавлено спустя 47 секунд:
Попробуй замени Simple дефендера, но в начале отбей эту часть во время боя и ты увидишь нужный тебе результат.
добавлено спустя 35 минут:
Тестирование многоуровневых взрывов.
http://www.youtube.com/watch?v=dyzNCoowP6w
Сделал исключительно в показательных целях. Очевидная бесполезность на лицо, да еще и если постараться, то даже кор ай семь от этих взрывов поперхнется.
добавлено спустя 1 минуту:
1 астероид делится на 10 частей, потом еще на 5 частей, а потом еще на 5 частей (я так до этого вынес свой проц).
1 * 10 * 5 * 5 = 250
Если убить одновременно 3 астероида? 250 * 3 = 750, а это уже жесть.
Последний раз редактировалось: Jeider (10:45 10-08-2011), всего редактировалось 4 раз(а) |
|
|
Jeider
570 EGP
    Рейтинг канала: 5(198) Репутация: 49 Сообщения: 2804 Откуда: Пенза Зарегистрирован: 17.08.2009
 |
|
Создание повреждений от разрушений
В общем это даже обучалкой назвать нельзя. Просто полезная информация.
Тот, кто лазял по инихам пушек заметил, что мины и ракеты имеют раздел [Explosion] для взрыва ракеты/мины. Открываем код:
Код: |
effect = rh_mine02_blast25
lifetime = 0.000000, 0.000000
process = disappear
strength = 100
radius = 25
hull_damage = 5000
energy_damage = 2500
impulse = 100 |
Тихо мирно частично переносим во взрыв корабля и получаем:
http://www.youtube.com/watch?v=aCGtKQuqQPI
ЗЫ: на корабле игрока при этом щита нет, поэтому и взрыв.
ЗЗЫ: можно не тупо взрывать, а повреждать взрывом. Типа мелкие осколки из корабля взрываемого.
Последний раз редактировалось: Jeider (08:18 15-08-2011), всего редактировалось 1 раз |
|
|
|
|
|
Канал Freelancer ->
МОДовый отсек: «Explosion - разрушение кораблей» |
|
|