Какво има в един игрови енджин?

GGJ 2018

от Борислав Станимиров / @stanimirovb

Няколко думи за мен


  • Борислав aka Боби aka iboB
  • Предимно С++ програмист
  • Предимно програмист на игри
  • Занимавам се с open source
  • Gib ☆ to DynaMix
  • Работя в Chobolabs

А какво е игрови енджин?

Гейм енджин. Game engine. Двигател?

  • Вашата игра
  • Енджин
  • Операционна система
  • Хардуер
  • АЕЦ Козлодуй

Как се прави енджин?


  • Производителността е първостепенна
  • Език: С++
    • C
    • Rust, Nim
    • Други...
  • Отнема мноооооо...

...ооооооооооооооо...

Как се прави енджин?


  • Производителността е първостепенна
  • Език: С++
    • C
    • Rust, Nim
    • Други...
  • ...го време
  • Не го правете ...в повечето случаи

Видове енджини


  • Платформа за правене на игри - GameMaker, Unity, Unreal, Godot
  • Фреймуърк за игри - CryEngine/Lumberyard, Ogre3D, Source и пак Unreal
  • Торба с бибилиотеки
  • Специфични за игра - по-често срещани, отколкото изглежда

И какво има в енджините?

Връзка с "външния" свят


  • Графична платформа: DirectX, OpenGL, Vulkan
  • Мрежова платформа: Sockets: TCP/HTTP, UDP
  • Звукова платформа
  • Файлова система и асинхронно зареждане
  • Контролна платформа: Мишка, Джойстик

Дебъгване и профилиране


  • Logging система
  • Performance profiling
  • Assertions
  • Unit testing
  • Crash handling
  • Събиране на статистики

"Помощни" инструменти


  • Редактор(и)
  • Експортери
  • Дебъгери
  • Build/Deploy система

Godot Editor

Lumberyard Editor

Ogre Exporter

Други "дреболии"


  • Математическа билиотека
  • Менажиране на памет
  • Система за модули
  • GUI
  • Конфигурационна система
  • Графични/Аудио/Видео формати
  • Формати за други ресурси
  • Crash handling
  • Локализация
  • Генератор на произволни числа
  • Сериализация
  • ...

Основни подсистеми


  • Ресурсна
  • Звукова
  • Графична*
  • Физична
  • Мрежова
  • Контролна
  • Скриптова**
  • Игрова**


* Специална работа

** Не винаги

Ресурси (Assets)


  • Формати → удобен за енджина вид
  • Версии и обовяване
  • Платформено-зависими ресурси (PVRTC)
  • Асинхронно зареждане
  • "Жизнен цикъл" на ресурсите
  • Кохерентност и счупени ресурси
  • Скриване/криптиране (very 2002)
  • Asset pipeline

Интересна asset история

Asset Easter Eggs Horrors

Звуци и музика


  • Миксер
  • Ефекти
  • 2D и 3D звуци
  • Звуци според събития
  • Параметризиране на звуци
    • Material-based effects
    • Environment-based effects
  • Звук ≠ файл
  • Плейлисти. Музика според събития
  • Процедурни звуци?

FMOD Studio

Интересна звукова история

Игри за слепи

Физична


  • Механика на непрекъснатите среди
  • Колизии
  • Репрезентация на сцената
  • Физични заявки
  • Флуиди
  • Пружини и cloth
  • Машини и превозни средства
  • Чупещи се и деформиращи се обекти

Интересна физична история

Най-забавните бъгове на света

Мрежа


  • Протоколи и ниско ниво
  • Сериализация, Protobuf, RPC
  • Синхронизация и prediction
  • Авторитет. Сървъри и клиенти
  • Предсказуемост на физиката
  • Чат и глас

Интересна мрежова история

Discord

Контроли


  • Устройства за вход
  • Физически и логически събития
  • Мрежови данни като устройство за контрол

Интересна контрол история

Скриптове


  • ... и понякога не-скриптове, но идеята е същата
  • Понякога единственият начин да се пише игра
  • Конфигурация и настройки
  • Свързващ слой
  • Често срещани езици
    • Lua
    • JS
    • Custom language
    • Python и т.н.

Интересна скриптинг история

Програмистите се увличат

Gameplay


  • Обектна система. Компоненти
    • Entity-component-system
    • Interface to component
  • Изкуствен интелект
    • Сензори
    • Behavior trees
    • Pathfinding и групови механики
    • "Истински" ИИ?
  • Hotswap and rapid development

Интересна геймплей история

Истински ИИ е опасен

Графика


  • Най-разработваното нещо
  • По дрехите посрещат
  • 60 fps = 16 ms на фрейм
  • 1920 х 1080 = 2 073 600
  • Пикселни/Фрагментни Шейдъри

Normal Mapping

Cool Normal Mapping

Геометрия


  • Скелетни анимации
  • Мофринг
  • Обратна кинематика
  • Вертексни шейдъри
  • Frustum Culling
  • Bounding boxes

Frustum Culling

И всичко това е само върхът на айсберга

... а даже още нямаме игра

Stepping on the shoulders of giants

Край


Въпроси?


Борислав Станимиров / ibob.github.io / @stanimirovb


Тази презентация е тук: http://ibob.github.io/slides/game-engine-bg/
Презентацията е лицензирана с Creative Commons Признание 3.0
Creative Commons License