Архитектура современного 3 d движка: Разработка Xenus:...

77
Архитектура современного 3D движка Разработка Xenus: Точка кипения Докладчики: Роман Лут, Сергей Забарянский Компания Deep Shadows

description

Лекция прочитана на конференции разработчиков компьютерных игр КРИ-2007

Transcript of Архитектура современного 3 d движка: Разработка Xenus:...

Page 1: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Архитектура современного 3D движка

Разработка Xenus: Точка кипения

Докладчики: Роман Лут, Сергей ЗабарянскийКомпания Deep Shadows

Page 2: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

О чем лекция

• О чем лекция: какие системы должны присутствовать в современном трехмерном движке?

• Для кого лекция: для разработчиков игр:) для программистов, руководителей проектов. Лекция обзорная.

• Цель лекции: реклама движка Vital Engine ZL

Page 3: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Офис типичной игровой компании 80-х годов

Page 4: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Первый трехмерный «движок»

BattleZone, Atari, 1980

Page 5: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Современные игры

“The Precursors”, Deep Shadows, 2007

Page 6: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 7: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Современные игры - графика

Реалистичная картинка:

• фототекстуры;

• имитация различных материалов (шейдеры);

• сложное освещение;

• обилие деталей;

• построцессинг;

«White Gold», Deep Shadows, 2007

Page 8: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Современные игры - интерактивность

Реалистичная симуляция мира:

• интерактивность

• точные столкновения, сложная физика;

• искусственный интеллект;

• качественная анимация;

• качественный звук;

«The Precursors», Deep Shadows, 2007

Page 9: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Огромный объём работ

• команды >30 человек;

• много деталей - трудно все учесть и спланировать;

Результат:

• нарушение сроков;

• перерасход бюджета;

• низкое качество продукта.

Page 10: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Разработка игры

• разработка «движка»

• разработка игрового кода;

• разработка контента.

«White Gold», Deep Shadows

Page 11: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Разработка «движка»

«Движок» рендер

• столкновения (collizion engine);

• физика;

• искусственный интеллект;

• звук;

• редакторы и плагины !!!;

• детали (системы частиц, трава, погода, quest диалоги и т.д.)

• вспомогательные системы (виртуальная файловая система, UI (user interface), скрипты, менеджер фоновой загрузки, save/load и т.д.);

Page 12: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Разработка «движка» - Рендер

• рендеринг геометрии мира• рендеринг статических объектов (деревья)• рендеринг движущихся объектов• рендеринг эфектов: • частицы: • трава: • lens flare и т.д.:• постпроцесинг• рендеринг HUD

Page 13: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Рендеринг геометрии мира• тайловая карта• каждая клетка - уровень 600x600м• клетки могут повторяться• клетки можно вращать на 90,180,270*

Page 14: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 15: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Рендеринг геометрии мира• в памяти - только 12 уровней• при движении по миру, уровни подгружаются на фоне• на дальнем расстоянии отображаются «level impostors»• impostors создаются автоматически при помощи утилиты

Уровень, 650000 треугольников,50Мб текстур

Level Impostor, 3000 треугольников,одна текстура 512x256

Page 16: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Рендеринг геометрии мира

Page 17: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Рендеринг геометрии мира

Page 18: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Рендеринг статических объектов

• наполненность мира обеспечивается множеством объектов

• дизайнер расставляет модели в редакторе уровней

• модели хранятся в памяти в одном экземпляре, могут использоваться много раз (своего рода «упаковка»)

Page 19: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 20: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 21: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Рендеринг статических объектов

• система рендеринга статических объектов обязательно должна использовать LOD

• LOD уровни создаются автоматически при экспортемодели из 3DS MAX

• на заднем плане вместо объектов отображаются спрайты(billboard)

модели спрайты

Page 22: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Рендеринг статических объектов

• статические объекты могут переключаться в активноесостояние - проигрывать анимацию

• статические объекты можно разрушать

Ролик: lodmesh_anim.avi

Page 23: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Рендеринг движущихся объектов

• персонажи, машины, животные

• предметы, которые можно двигать (бочки, ящики и т.д.)

Page 24: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Рендеринг движущихся объектов

• используют скелетную анимацию

• используют LOD уровни геометрии и скелета

Page 25: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Рендеринг эффектов

• системы частиц (particles) реализованы в концепциидвижка как «процедурная модель»

• процедурная модель - специальный класс, который умеет “рендерить себя”

• можно легко создавать дополнительные процедурные модели - плагины к движку

• трасеры, flare, lens flare, тормозной путь на асфальте,туманности(космос), инверсионный след(космос)

Page 26: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Рендеринг эффектов

• трава - «объекты детализации» - объекты на поверхностиземли

• отображаются движком возле персонажа, согласнокарте, прорисованной дизайнером в редакторе уровней

• позволяют значительно повысить воспринимаемую насыщенность мира деталями

Ролик: grass.avi

Page 27: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Построцессинг

• постпроцессинг - набор фильтров, применяемых к финальной картинке

• легко добавлять новые типы фильтров - плагины к движку

• стек фильтров - порядок и параметры применения фильтров- описывается в текстовом файле

• реализованы HDR with automatic exposure control, blum,motion blur, depth of field, air distortion

• можно реализовывать эффекты для геймлея - черно-белоеизображение, сепия, cartoon, размытие фокуса, искажение цветов - управляется из игрового кода

Page 28: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Построцессинг

;============================================================; Bloom;============================================================;; - уменьшаем картинку в 4 раза. Получаем примерно 64x64, в зависимости от разрешения экрана.; Можно уменьшить еще, но возможно появление некрасивых блочных артефактов из-за bilinear ; filtering при обратном увеличении.; - пикселы темнее указанного порога делаем черными (оставляем только яркие пикселы); ; - накладываем blur - separate gaussian blur;; - увеличиваем назад до размеров экрана;; - добавляем разблюренную картинку к исходной и выводим на экран.

TEMP1 NONE NONE NONE temp2 scaledown4x4 0

TEMP2 NONE NONE NONE temp3 brightpass 0 0.1 1

TEMP3 NONE NONE NONE temp2 fakegaussianh 0 40TEMP2 NONE NONE NONE temp3 fakegaussianV 0 40

TEMP3 NONE NONE NONE temp2 scale 0 4 4

TEMP1 TEMP2 NONE NONE backbuffer combine 0 1.0 1.0 1.0 0.6 0.6 0.6

Описание стекапостроцесса

Page 29: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 30: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 31: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Рендеринг HUD

• библиотека UI: окна, кнопки, диалоги, картинки, списки, деревья

• можно добавлять свои элементы интерфейса, наследуяот TWidget - автоматически появляются в редакторе

• редактор UI

• принцип - редактор UI Delphi

• эскизы сохраняются в XML

Page 32: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 33: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Библиотека шейдеров

• DirectX 9.0

• Библиотека шейдеров - отдельный плагин в движку

• Новые шейдеры создаются программистом - наследование от TShader

• редактора a-la Maya Shading Graph нет

• Pixel shaders 1.0-3.0

• Поддержка Vertex shader textures

• Движок ориентирован на материалы, а не на шейдеры(a-la 3DS MAX), одному материалу соответствует 3-10 шейдеров DirectX

• Добавить новый тип материала - 0.5-4 дня

Page 34: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Библиотека шейдеров

Type: BUMPMAPMaterialId: 0World space width: 300.0World space height: 300.0SOLID: YesTRANSPARENT: NoGOURAUD: NoHIGHQUALITY: NoFILTERING: YesUTILING: YesVTILING: YesUWRAPPING: NoVWRAPPING: No

Texture1_Name: vehicles\SDN_boat_part2_dmap.tgaTexture1_BUMP: vehicles\SDN_boat_part2_nmap.tga

SPECULARSTRENGTH_R: 1.0SPECULARSTRENGTH_G: 1.0SPECULARSTRENGTH_B: 1.0BUMPINESS: 1.0

SPECULARPOWER: 120HDRGlow: 0.3AMBIENT: 0.4

Описание материала

Page 35: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Библиотека шейдеров

AlphaGlowAlphakeyAlphamaskAlphastencilAtmosphereBumpmapClothColorDecalBumpmapDistortionEnvBumpmapEnvmapGlowBumpmapGlowColorHightiledHologramLandswellLava

LayeredLeafsMapGroupInfoMiniMapMorphMultidetailOceanParalaxBumpmapPSunSimpleSkinSunflowerTerrainTransparentTransparent_EnvmapTransparentNoiseWater

Page 36: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Библиотека шейдеров

Ролик: shader.avi

Page 37: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Освещение

• геометрия уровней - precalculated lightmaps

• статические объекты - precalculated вершинное освещение

• движущиеся объекты - precalculated упакованная регулярная сетка, освещение в каждой точке апроксимируется - направленный источник+амбиент

• есть динамические источники света(фонарик, фары машин)

Page 38: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 39: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 40: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 41: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 42: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 43: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 44: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Освещение

• освещение рассчитывается с помощью редактора уровней:ambient occlusion + освещение от Солнца + освещение от источников света

• расчет освещения - полностью автоматический(от дизайнера ничего не требуется)

• редактор рассчитывает два освещения: дневное и ночное

• комбинируя два освещения, можно реализовыватьсмену дня и ночи, смену погоды

• расчет освещения на один уровень - 4-20 часов

Page 45: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Collision

• столкновения обрабатываются с геометрией уровня,отдельный меш рисовать не нужно

• для статических объектов (деревья) рисуется hitmesh - меш для столкновений, 300-500 треугольников

• любой меш, единственное ограничение - игрок не долженкасаться open edges

• оптимизировано для streaming

• оптимизировано по памяти (до 1Мб на уровень 600x600м)

Page 46: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Физика

• боксы, цилиндры, капсулы, сферы

• физическая система строится в 3DS Max, (свой плагин - физические объекты, joint’s и пружины) экспортируется вместе с моделью в формат движка • все физические параметры задаются в редакторе ресурсов

Page 47: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Физика

• готовые классы: • машина • танк • ветолет • самолет

• единая физическая система - машина, танк, качели, ragdol

Page 48: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

AI

• структуры для поиска пути стоятся автоматически в редакторе уровней

• библиотека AI позволяет быстро обрабатывать запросы: • путь о точки к точке (с учетом дверей) • видимость из точки в точку

• позволяет реализовывать сложное поведение (взаимодействие персонажей в бою, укрытие, окружение)

• удобные базовые классы, реализуют 90% необходимой функциональности

Page 49: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 50: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Сеть

• сетевая архитектура - в основе движка

• single player - игра на локальном сервере

Page 51: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Звук

• static и streaming звуки

• неограниченное количество

• 2D и 3D источники, ambient

• загрузка и распаковка звуков на фоне, форматы - WAV, OGG

Page 52: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Редакторы - редактор уровней

• позволяет создавать «с нуля» и редактировать геометриюуровней

• CSG не используется, уровень = mesh

• тесное взаимодействие с 3DS MAX

• отображает финальную картинку, включая построцесс

Page 53: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 54: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Редакторы - редактор уровней

• шейдер TERRAIN позволяет прорисовывать слои с помощьюкисточки (до 32 слоев)

Page 55: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Редакторы - редактор уровней

• карта объектов детализации прорисовывается с помощьюкисточки

Page 56: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Редакторы - редактор уровней

• служит для расстановки статических и движущихся объектов на уровнях

• программист AI написал новый юнит - автоматическипоявляется в списке классов объектов в редакторе

• поддерживает коллективную работу над уровнем:объекты могут расставлять несколько человек одновременно.Объекты аплоадятся/забираются с сервера и хранятся на нем

• дизайнер уровня еще расставляет деревья, а гейм-дизайнеруже расставляет персонажей и прописывает квесты

Page 57: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 58: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Редакторы - редактор карты мира

• для расстановки клеток

• поддерживается коллективная работа, типы клеток и сами карты хранятсяна сервере

Page 59: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 60: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Редакторы - плагин экспорта

моделей из 3DS MAX

• модели создаются полностью в 3DS MAX;

• своего редактора моделей нет;

• плагин автоматически создает LOD уровни геометрии и скелета при экспорте;

Page 61: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Редакторы - просмотрщик моделей

• позволяет увидеть финальный результат, запускаетсяавтоматически после экспорта

• позволяет проверить анимацию, разделение на части,правильно ли работают контроллеры

Page 62: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 63: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Скелетная анимация

• блендинг 2 или 4 анимаций

• скелет разделен на части - каждая часть проигрывает своюанимацию

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

• можно программно вращать группы костей (bone controller)

• можно программно управлять положением и ориентациейгруппы костей (bone controller)

• используется сжатие анимации (персонаж - 4000 кадров,60 костей)

• используется LOD скелета

Page 64: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Скелетная анимация

• можно «вешать» одну модель на кость («порт») другой - пистолет в руке, партикл выстрела на дуле пистолета

• лицевая анимация - 12 костей на лице

Page 65: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Скелетная анимация

• для того, чтобы ноги не проскальзывали - используются«кривые движения»

• строятся автоматически при экспорте

Ролик: movecurves.avi

Page 66: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Редакторы - редактор системы частиц• организован как плагин к игре

• сложные системы частиц: частица рождает новый источникчастиц в момент смерти/через промежутки времени/черезуказанное расстояние

• ветер, гравитация

Page 67: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 68: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Редакторы - редактор ресурсов

• ресурсы: • строки • диалоги • описание quest-предметов • параметры модели для конкретного unit (кадры анимации, названия портов)

• поддерживается несколько языков, можно локализировать поэтапно

• поддерживается коллективная работа: • каждый ресурс имеет владельца • владелец выкладывает свои ресурсы на сервер, забирает чужие с сервера • сценарист пишет диалоги, геймдиз прописывает анимацию модели - одновременно

Page 69: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Page 70: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Редакторы - редактор UI

• a-la Delphi form designer

• программист написал новый элемент интерфейса - автоматически появляется в редакторе

Page 71: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Редакторы - коллективная работа

• Важно: все редакторы рассчитаны на коллективную работу -ресурсы хранятся в базе данных

• это позволяет распараллелить работу над контентом

Page 72: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Что еще?

• виртуальная файловая система(групповые файлы)

• cut-scenes на движке

• проигрывание AVI роликов

• процедурные текстуры(рисуются программно)

• смена дня и ночи, погоды

• система save/load

• decals (следы от пуль, взрывов)

• skin (замена текстур на моделях)

• ...

Page 73: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Программная архитектура

• к серьёзному приложению - серьёзный подход

• объектно-ориентированная архитектура

• шаблоны проектирования

• «программирование с использованием абстрактных интерфейсов»

• движок разделен на модули (DLL) - облегчаетколлективную работу

• расширение движка и кустомизация к конкретной игре -плагины

• EXE игры должен вызвать VE_LaunchEngine(); все остальное - плагинами

(см. «Плагины на основе COM интерфейсов» http://www.dtf.ru/articles/read.php?id=44995)

Page 74: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Универсальный движок

• большой мир - Action/RPG

• карта из одной клетки - indoor First person/Third person shooter

• камера сверху - стратегия

• нет геометрии уровня - Space sim

Page 75: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Ролик precursors.avi

Page 76: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Выводы

• огромный объем работ

• предоставьте создание движка профессионалам :) делайте интересные игры!

• Vital Engine 3.0 рулит!

По вопросам лицензирования:

[email protected]

Page 77: Архитектура современного 3 d движка: Разработка Xenus: Точка кипения

Дополнительные материалы

• сайт компании Deep Shadows - www.deep-shadows.com