Здравствуй, %username%!
Ты наверное задаёшься вопросом: "Причём тут велосипеды? Это же геймдев!". А я на это отвечу так: "Геймдев весь был и остаётся велосипедом". Это "Записки велосипедиста", в которых расскажу про свои "приключения", а также дам ссылки на интересные материалы для домашнего изучения. Итак, если заинтересовался - просим под кат!
Entity System - я подразумевал как часть менеджера сцены. Отдельно обычно не существует.
Не имеет прямого отношения к сцене, не путать с аналогичной терминологией в юнити. Речь о data-driven организации игровой логики и соответствующем представлении всех игровых объектов. Сцена с её геометрией строится на основе данных из Entity System, но при этом Entity System может содержать не отображаемые на сцене данные и даже существовать отдельно от сцены в случае сервера. Сливать воедино объекты на сцене и игровую логику это дурной тон и больно кусается при масштабировании проекта - даже в движках позволяющих такое, желательно в объектах сцены оставлять только логику, связанную с отображением, а все остальное выносить отдельно.
Не упомянуты такие вещи, как Entity System (хотя далеко не все ими пользуются, конечно - сложная штука), многопоточность, система работы с шейдерами (странно видеть отдельно сетевую систему, систему анимаций и систему загрузки ассетов, но не видеть отдельную систему для работы с шейдерами). Кроме того, универсальная система событий далеко не всегда есть в наличии "из коробки", например готовая реализация может использоваться только для обработки пользовательского ввода, а дальше уже как хочешь, так и выкручивайся. Сетевая компонента тоже часто представлена не полноценным движком, а на уровне вспомогательной библиотеки. Также ни слова не сказано про специальные форматы для ассетов, которыми грешат практически все движки.
Вроде все, что с первого раза на глаза попалось, завтра перечитаю еще раз.
Entity System - я подразумевал как часть менеджера сцены. Отдельно обычно не существует.
Многопоточность - относится к устройству контроллера игрового процесса (ядру). Отдельно выделить нельзя.
Система работы с шейдерами - это часть визуализатора.
Про систему событий и сетевой движок... я специально сказал что данный список можно выделить очень часто. Т.е. не все так делают, но большинство.
Про спец. форматы - это обзорный номер. Не знаю почему они ими "грешат", но это так или иначе часть системы ассетов.
Благодарю)
система работы с шейдерами (странно видеть отдельно сетевую систему, систему анимаций и систему загрузки ассетов, но не видеть отдельную систему для работы с шейдерами)
Сперва подумал, что что тут странного, но раз система анимаций вынесена. То вопрос действительно остается открытым. ZLOI_DED:
Очень интересно узнать про реализацию сетевого движка.
Система анимаций вынесена отдельно, т.к. она занимается не связанной с физ. движком деятельностью.
А вот шейдеры привязаны к визуализатору и поэтому выделить их в отдельную систему не получается.
Хорошо. А что интересно? Как взаимодействуют клиент и сервер, какие протоколы используются, в чём их преимущества или всё сразу?)
Спасибо за фидбек!)
P.S. На самом деле здесь разделение систем даже более теоритическое чем то, какое бы вы делали в действительности. Т.к. смысла например, выносить систему событий из ядра, нет, но по сути это отдельная система, отдельный топик о котором можно говорить. :)
Многопоточность штука сложная сама по себе, что уж там говорить про игры. Достаточно трудно выделить части, которые можно общитывать параллельно. Но это не значит, что не возможно.
В общем случае, в отдельные потоки уходят: рендеринг (та его часть, что выполняется на CPU, в основном это подготовка сцены к передаче на GPU), физика, аудио и часто загрузка ассетов. Ну и сверху добавляются различные специфичные вещи, зависящие уже от конкретной игры.
У меня как у задрота веб разработки, это вызывает ассоциацию с базами данных. В данном контексте это что? prog:
многопоточность
Многопоточность штука сложная сама по себе, что уж там говорить про игры. Достаточно трудно выделить части, которые можно общитывать параллельно. Но это не значит, что не возможно. prog:
система работы с шейдерами (странно видеть отдельно сетевую систему, систему анимаций и систему загрузки ассетов, но не видеть отдельную систему для работы с шейдерами)
Сперва подумал, что что тут странного, но раз система анимаций вынесена. То вопрос действительно остается открытым. ZLOI_DED:
Очень интересно узнать про реализацию сетевого движка.
Не упомянуты такие вещи, как Entity System (хотя далеко не все ими пользуются, конечно - сложная штука), многопоточность, система работы с шейдерами (странно видеть отдельно сетевую систему, систему анимаций и систему загрузки ассетов, но не видеть отдельную систему для работы с шейдерами). Кроме того, универсальная система событий далеко не всегда есть в наличии "из коробки", например готовая реализация может использоваться только для обработки пользовательского ввода, а дальше уже как хочешь, так и выкручивайся. Сетевая компонента тоже часто представлена не полноценным движком, а на уровне вспомогательной библиотеки. Также ни слова не сказано про специальные форматы для ассетов, которыми грешат практически все движки.
Вроде все, что с первого раза на глаза попалось, завтра перечитаю еще раз.
Здравствуй, %username%!
Ты наверное задаёшься вопросом: "Причём тут велосипеды? Это же геймдев!". А я на это отвечу так: "Геймдев весь был и остаётся велосипедом". Это "Записки велосипедиста", в которых расскажу про свои "приключения", а также дам ссылки на интересные материалы для домашнего изучения. Итак, если заинтересовался - просим под кат!
Комментарии проекта Space Station 133D
Выбор редакции
Записки велосипедиста #2 - Внутренности игровых движков
Ты наверное задаёшься вопросом: "Причём тут велосипеды? Это же геймдев!". А я на это отвечу так: "Геймдев весь был и остаётся велосипедом". Это "Записки велосипедиста", в которых расскажу про свои "приключения", а также дам ссылки на интересные материалы для домашнего изучения. Итак, если заинтересовался - просим под кат!
Ред. ZLOI_DED
Многопоточность - относится к устройству контроллера игрового процесса (ядру). Отдельно выделить нельзя.
Система работы с шейдерами - это часть визуализатора.
Про систему событий и сетевой движок... я специально сказал что данный список можно выделить очень часто. Т.е. не все так делают, но большинство.
Про спец. форматы - это обзорный номер. Не знаю почему они ими "грешат", но это так или иначе часть системы ассетов.
Благодарю)
А вот шейдеры привязаны к визуализатору и поэтому выделить их в отдельную систему не получается.
Хорошо. А что интересно? Как взаимодействуют клиент и сервер, какие протоколы используются, в чём их преимущества или всё сразу?)
prog:
prog:
ZLOI_DED:
Очень интересно узнать про реализацию сетевого движка.
Вроде все, что с первого раза на глаза попалось, завтра перечитаю еще раз.
Записки велосипедиста #1 - Философия игровых движков
Ты наверное задаёшься вопросом: "Причём тут велосипеды? Это же геймдев!". А я на это отвечу так: "Геймдев весь был и остаётся велосипедом". Это "Записки велосипедиста", в которых расскажу про свои "приключения", а также дам ссылки на интересные материалы для домашнего изучения. Итак, если заинтересовался - просим под кат!
Я не хочу печалить час ничем.
Ред. Praytic
Продолжение уже в процессе)