Записки велосипедиста #2 - Внутренности игровых движков

Здравствуй, %username%!
Ты наверное задаёшься вопросом: "Причём тут велосипеды? Это же геймдев!". А я на это отвечу так: "Геймдев весь был и остаётся велосипедом". Это "Записки велосипедиста", в которых расскажу про свои "приключения", а также дам ссылки на интересные материалы для домашнего изучения. Итак, если заинтересовался - просим под кат!
12 4 443
0
24
8 лет назад
0
Entity System - я подразумевал как часть менеджера сцены. Отдельно обычно не существует.
Не имеет прямого отношения к сцене, не путать с аналогичной терминологией в юнити. Речь о data-driven организации игровой логики и соответствующем представлении всех игровых объектов. Сцена с её геометрией строится на основе данных из Entity System, но при этом Entity System может содержать не отображаемые на сцене данные и даже существовать отдельно от сцены в случае сервера. Сливать воедино объекты на сцене и игровую логику это дурной тон и больно кусается при масштабировании проекта - даже в движках позволяющих такое, желательно в объектах сцены оставлять только логику, связанную с отображением, а все остальное выносить отдельно.
Система анимаций вынесена отдельно, т.к. она занимается не связанной с физ. движком деятельностью.
Но ведь система анимаций это, как правило, тоже часть визуализатора, как и шейдеры.
0
10
8 лет назад
Отредактирован ZLOI_DED
0
prog:
Не упомянуты такие вещи, как Entity System (хотя далеко не все ими пользуются, конечно - сложная штука), многопоточность, система работы с шейдерами (странно видеть отдельно сетевую систему, систему анимаций и систему загрузки ассетов, но не видеть отдельную систему для работы с шейдерами). Кроме того, универсальная система событий далеко не всегда есть в наличии "из коробки", например готовая реализация может использоваться только для обработки пользовательского ввода, а дальше уже как хочешь, так и выкручивайся. Сетевая компонента тоже часто представлена не полноценным движком, а на уровне вспомогательной библиотеки. Также ни слова не сказано про специальные форматы для ассетов, которыми грешат практически все движки.
Вроде все, что с первого раза на глаза попалось, завтра перечитаю еще раз.
Entity System - я подразумевал как часть менеджера сцены. Отдельно обычно не существует.
Многопоточность - относится к устройству контроллера игрового процесса (ядру). Отдельно выделить нельзя.
Система работы с шейдерами - это часть визуализатора.
Про систему событий и сетевой движок... я специально сказал что данный список можно выделить очень часто. Т.е. не все так делают, но большинство.
Про спец. форматы - это обзорный номер. Не знаю почему они ими "грешат", но это так или иначе часть системы ассетов.
Благодарю)
alexprey:
система работы с шейдерами (странно видеть отдельно сетевую систему, систему анимаций и систему загрузки ассетов, но не видеть отдельную систему для работы с шейдерами)
Сперва подумал, что что тут странного, но раз система анимаций вынесена. То вопрос действительно остается открытым.
ZLOI_DED:
Очень интересно узнать про реализацию сетевого движка.
Система анимаций вынесена отдельно, т.к. она занимается не связанной с физ. движком деятельностью.
А вот шейдеры привязаны к визуализатору и поэтому выделить их в отдельную систему не получается.
Хорошо. А что интересно? Как взаимодействуют клиент и сервер, какие протоколы используются, в чём их преимущества или всё сразу?)
Спасибо за фидбек!)
P.S. На самом деле здесь разделение систем даже более теоритическое чем то, какое бы вы делали в действительности. Т.к. смысла например, выносить систему событий из ядра, нет, но по сути это отдельная система, отдельный топик о котором можно говорить. :)
0
29
8 лет назад
0
prog, ну вообще да, кст, асинхронная загрузка ассетов, штука полезная.
0
24
8 лет назад
0
У меня как у задрота веб разработки, это вызывает ассоциацию с базами данных. В данном контексте это что?
Многопоточность штука сложная сама по себе, что уж там говорить про игры. Достаточно трудно выделить части, которые можно общитывать параллельно. Но это не значит, что не возможно.
В общем случае, в отдельные потоки уходят: рендеринг (та его часть, что выполняется на CPU, в основном это подготовка сцены к передаче на GPU), физика, аудио и часто загрузка ассетов. Ну и сверху добавляются различные специфичные вещи, зависящие уже от конкретной игры.
2
29
8 лет назад
2
как Entity System
У меня как у задрота веб разработки, это вызывает ассоциацию с базами данных. В данном контексте это что?
prog:
многопоточность
Многопоточность штука сложная сама по себе, что уж там говорить про игры. Достаточно трудно выделить части, которые можно общитывать параллельно. Но это не значит, что не возможно.
prog:
система работы с шейдерами (странно видеть отдельно сетевую систему, систему анимаций и систему загрузки ассетов, но не видеть отдельную систему для работы с шейдерами)
Сперва подумал, что что тут странного, но раз система анимаций вынесена. То вопрос действительно остается открытым.
ZLOI_DED:
Очень интересно узнать про реализацию сетевого движка.
0
24
8 лет назад
0
Не упомянуты такие вещи, как Entity System (хотя далеко не все ими пользуются, конечно - сложная штука), многопоточность, система работы с шейдерами (странно видеть отдельно сетевую систему, систему анимаций и систему загрузки ассетов, но не видеть отдельную систему для работы с шейдерами). Кроме того, универсальная система событий далеко не всегда есть в наличии "из коробки", например готовая реализация может использоваться только для обработки пользовательского ввода, а дальше уже как хочешь, так и выкручивайся. Сетевая компонента тоже часто представлена не полноценным движком, а на уровне вспомогательной библиотеки. Также ни слова не сказано про специальные форматы для ассетов, которыми грешат практически все движки.
Вроде все, что с первого раза на глаза попалось, завтра перечитаю еще раз.
Здравствуй, %username%!
Ты наверное задаёшься вопросом: "Причём тут велосипеды? Это же геймдев!". А я на это отвечу так: "Геймдев весь был и остаётся велосипедом". Это "Записки велосипедиста", в которых расскажу про свои "приключения", а также дам ссылки на интересные материалы для домашнего изучения. Итак, если заинтересовался - просим под кат!
15 6 260
2
14
8 лет назад
2
Хреновей быть возможно ещё может.
...но пусть оно вас больше не тревожит;
Я не хочу печалить час ничем.
3
20
8 лет назад
Отредактирован Praytic
3
Хреновей быть возможно ещё может.
раскрыть
Загруженные файлы
0
10
8 лет назад
0
prog:
ZLOI_DED, как самочувствие? и не намечается ли продолжение?
Хреновей быть возможно ещё может.
Продолжение уже в процессе)
0
24
8 лет назад
0
ZLOI_DED, как самочувствие? и не намечается ли продолжение?