Destruction System for FPS Shooter in Unity 5

27
Destruction System for FPS Shooter in Unity 5 Устрой Destroy!

Transcript of Destruction System for FPS Shooter in Unity 5

Page 1: Destruction System for FPS Shooter in Unity 5

Destruction System for FPS Shooter in

Unity 5Устрой Destroy!

Page 2: Destruction System for FPS Shooter in Unity 5

Чувак, ты кто вообще?

Слава ‘gnoblin’ Панкратов Люблю Unity 7 летvc.ru/p/problem-10081habrahabr.ru/post/112444/

Page 3: Destruction System for FPS Shooter in Unity 5

Кто играл в сидж?

о чем референс-игра

Page 4: Destruction System for FPS Shooter in Unity 5

Что хотим?

Page 5: Destruction System for FPS Shooter in Unity 5

Что хотим?

Разрушать уровень в Unity,

как парни из Ubisoft в Rainbow Six: Siege.

(disclaimer)

Page 6: Destruction System for FPS Shooter in Unity 5

Special Thanks

•Roman Chehowski•Volodymyr Dotsenko (defaxer)•Артем Нетягин

Page 7: Destruction System for FPS Shooter in Unity 5

Team

•Вадим Янтбелидзе (код).•Александр Горячев (арт) https://allien.carbonmade.com/.

•Слава Панкратов (просто какой-то чел)

Page 8: Destruction System for FPS Shooter in Unity 5

План

интро (н.у.) и сам алгоритм (в.м., с.), 20 мин, вопросы

Page 9: Destruction System for FPS Shooter in Unity 5

Задача

•Хотим в реалтайме из 16 стволов рушить 200-300 стен на 30-45 тысяч кусков (2-3 млн треугольников).

•Оставляем возможность задавать произвольную форму для кусков (чанков).

Page 10: Destruction System for FPS Shooter in Unity 5

Какие варианты (раньше)?

Конец 2014го года - на ассет сторе нету подходящих решений с прицелом на высокую производительность.

Page 11: Destruction System for FPS Shooter in Unity 5

Какие варианты (сейчас)?

1. Fracturing & Destruction (автонарезка) assetstore.unity3d.com/en/#!/content/9411.

2. DestroyIt (круто!) assetstore.unity3d.com/en/#!/content/18811.

3. Fragmented Objects (прикольно!) assetstore.unity3d.com/en/#!/content/25699 (но алгоритм пригодится все равно)

Page 12: Destruction System for FPS Shooter in Unity 5

DestroyIT

Page 13: Destruction System for FPS Shooter in Unity 5

Fragmented Objects

Page 14: Destruction System for FPS Shooter in Unity 5

Assetstore

Page 15: Destruction System for FPS Shooter in Unity 5

Пишем велосипед

Page 16: Destruction System for FPS Shooter in Unity 5

Внешний вид уровня

модульный дом, три этажа, десятки комнат

Page 17: Destruction System for FPS Shooter in Unity 5

Внешний вид уровня

Page 18: Destruction System for FPS Shooter in Unity 5

Внешний вид уровня

Page 19: Destruction System for FPS Shooter in Unity 5

Префаб стены

Page 20: Destruction System for FPS Shooter in Unity 5

Разрушение

скрины разрушенного дома

Page 21: Destruction System for FPS Shooter in Unity 5

Разрушение

скрины разрушенного дома

Page 22: Destruction System for FPS Shooter in Unity 5

Разрушение

скрины разрушенного дома

Page 23: Destruction System for FPS Shooter in Unity 5

Pipeline (суть)

• Художник предварительно готовит ассеты.• Хитро запекаем и прокрашиваем геометрию

эдитор скриптами.• В рантайме синкаем изменения по сети,

(передавая айди стены и айди чанка), размазываем нагрузку по кадрам, ведем себя хитро и рушим стенку способом,

похожим на прогрессивный jpeg.=> Получаем стабильный фпс и возможность

разрушать весь уровень с приемлемой детализацией.

Page 24: Destruction System for FPS Shooter in Unity 5

Pipeline (арт)

• Художник готовит чанки (неразрушенный вариант, 9 лоуполи чанка, 144 хайполи чанка) для каждого вида “стены” (стена, пол, дверные проемы, баррикады).

• заготовленные варианты под взрыв стены• перегородки

Page 25: Destruction System for FPS Shooter in Unity 5

Pipeline (Editor scripts)

• Запекаем chunkID эдитор скриптом в uv2.• Cоздаем кеш треугольников (список туплей с

информацией про чанки).• комбайним чанки в цельные меши.• одеваем везде лодгруппы с упрощенными

материалами.• Программно дублируем префаб и входящие в

него меши, прокрашиваем 14 комбинаций цветов обоев в vertex color.

• на каждую “стену” на уровне ставим закрытый портал.

Page 26: Destruction System for FPS Shooter in Unity 5

Pipeline (Runtime)

• uv2 chunk id для определения куда мы попали (когда есть геометрия), виртуальная сетка на кубе когда не разрушена

• два отдельных скрипта с chunk HP (под целую и покоцанную стену)

• триангл кеш, убирание треугольников• стандартный occlusion culling (закрытый портал на целой

стене, при появлении дырки портал открывается). SECTR VIS.• передаем айди стены и айди чанка в стене по сети, чтобы

засинкать изменения на других клиентах.• размазываем нагрузку по кадрам, если в один момент

времени надо разрушить много чанков.

Page 27: Destruction System for FPS Shooter in Unity 5

Устрой destroy!

Вопросы?

skypeid: madkust