Гибкая ECS с кастомными layout-профилями: как я строил ECSS внутри своего игрового движка

Всем привет, я делаю свой пет-проект - игровой движок, и какой пет-проект без собственноручно сваренного велосипеда, так я и пришел к идее реализации своей ECS. В этой статье я хочу рассказать простыми словами - что такое ECS, и как он эволюционно появился у меня. Что такое ECS - Entity Component System (Сущность Компонент Система) - архитектура хранения данных, где логика - системы, явно отделена от данных - компонентов, которые объединены одним общим id - сущностью. В двух словах, идея ECS заключается в том, чтобы навести порядок в игровом коде, и игровом мире - выделить все данные игровых объектов(сущностей), и желательно сделать это data-oriented (почему желательно я расскажу ниже). Предположим, у вас в игре есть объект КУБ - квадратный, все стороны равны, все углы равны, классический такой КУБ. У него есть положение в мире (Transform) у него есть его кубический меш (Mesh), он умеет быть отрендеренным (IsRenderable), и, ко всему прочему, он еще и обладает какой-то своей кубической физикой (Physic).

https://habr.com/ru/articles/972708/

#ECS #DOD #soa #aos #разработка_игр #игровой_движок #gamedev #game_engine

Гибкая ECS с кастомными layout-профилями: как я строил ECSS внутри своего игрового движка

Всем привет, я делаю свой пет-проект - игровой движок, и какой пет-проект без собственноручно сваренного велосипеда, так я и пришел к идее реализации своей ECS. В этой статье я хочу рассказать...

Хабр

[Перевод] Система объектов из Quake: шелл-скриптинг для игр

Игровой движок Quake невероятно сильно повлиял на технологию разработки игр. Он активно лицензировался, в том числе, для использования в таких топовых играх как «Half-Life», «Call of Duty» и «Star Wars: Jedi Knights». Вероятно, наиболее серьёзное влияние оказали те многочисленные разработчики, которые научились писать игры, занимаясь его моддингом, а затем принесли с собой его принципы в другие студии, обогатив ими развитие других движков. Большая часть того, что уже написано о движке Quake — это информация с акцентом на технологию 3D-рендеринга или многопользовательские сетевые игры . Но почти без внимания остаётся инновационная система объектов — парадигма, с опорой на которую дизайнеры уровней создают динамические взаимодействия, не прибегая к написанию кода. В этой статье будет сделан краткий обзор системы объектов, сложившейся в Quake, и рассказано, на основе каких принципов она была спроектирована. С моей точки зрения особенно интересно, насколько сильно эта философия схожа с принципами, заложенными в основу UNIX. Оба решения можно резюмировать как системы, в каждой из которых есть одна базовая субстанция (в UNIX этот файл) и язык, на котором можно описывать сочетание простых поведений, комбинирующихся в эмерджентном порядке (оболочка).

https://habr.com/ru/articles/967568/

#quake #игровой_движок #скриптинг #разработка_игр #unixway

Система объектов из Quake: шелл-скриптинг для игр

Игровой движок Quake невероятно сильно повлиял на технологию разработки игр. Он активно лицензировался, в том числе, для использования в таких топовых играх как «Half-Life», «Call of Duty» и «Star...

Хабр

Как я бросил луч на сцену

Как бы я ни старался учиться электронике, я нахожу занятным освоить в первую очередь аналитическую геометрию, чтобы виртуозно манипулировать векторами и делать разные расчёты. Я разрабатываю собственный движок, чтобы отработать математические навыки и подготовиться к математическому анализу. Да, мне уже 37 лет, а я всё ещё не знаю как пользоваться правильно дифференциальными уравнениями, хоть и понимаю из одной книги как это было важно для разных открытий, в том числе и для нахождения площади или длины кривых. Свой путь я начал с линейной алгебры и до сих пор знаю наверное очень мало из этой области. Даже пробовал с утра просить нейросеть давать мне задачки из линейной алгебры и решал их, а потом отдавал на проверку. Эта алгебра показалась более дружелюбной для начала вхождения в изучение математики. Как только я узнаю какую-то формулу или что-то открываю для себя новое, я тут же воодушевляюсь и очень радуюсь, и конечно не забываю добавлять в игровой движок новые знания, подчерпнутые из книг. Я бы хотел рассказать как я бросил луч в сцену, на создание которого, а он ещё не доделан, я потратил 4 дня. Движок мой на C и поэтому думаю, что будет понятен каждому. Я хотел разобраться в этом сам и не боялся времени, которое ускользает у нас каждый день. Больше люблю получать удовольствие от процесса и поэтому я не искал в книгах по началу как правильно бросить луч, но и потом как оказалось, что я не совсем понимаю примеры, которые мне подала нейросеть. Нейросеть мне подсказала, что можно перемножить обратные (матрицу камеры и проекции) и умножить это на вектор и потом получается что-то, с чем я не понимал как работать и пошёл дальше своим путём.

https://habr.com/ru/articles/966664/

#игровой_движок

Как я бросил луч на сцену

Как бы я ни старался учиться электронике, я нахожу занятным освоить в первую очередь аналитическую геометрию, чтобы виртуозно манипулировать векторами и делать разные расчёты. Я разрабатываю...

Хабр

Псевдо-3D движок за 150 строк кода или рейкастинг для чайников

На хабре было много статей как создать такой движок, но их проблема была в том что они давали только отрывки кода, не объясняя полностью весь процесс, который мог бы быть по-настоящему полезен новичкам или полным нулям. Поэтому я решил подделится своим опытом в этом направлении

https://habr.com/ru/articles/948320/

#SFML #C++ #Игровой_движок #raycasting #псевдотрёхмерность #псведо3D #минимализм #kiss #игра #импровизация

Псевдо-3D движок за 150 строк кода или рейкастинг для чайников

На хабре было много статей как создать такой движок, но их проблема была в том что они давали только отрывки кода, не объясняя полностью весь процесс, который бы мог бы полезен новичкам или полным...

Хабр

[Перевод] Низкоуровневый скриптинг на C++ для игровых движков

Я постарался охватить только основы, но текст всё равно получился очень длинным. libriscv — это зрелый эмулятор RISC-V , который в настоящее время используется в игровых движках. Насколько мне известно, это единственный эмулятор, в котором основной акцент делается на обработке задержек, а также предоставляются специализированные решения и инструменты для выполнения быстрых вызовов при обращении с функциями — как входящих, так и исходящих. Причём, всё это заключено в безопасной песочнице. Задержки, наблюдаемые в libriscv, гораздо ниже, чем в эталонных эмуляторах. Меня многие спрашивали, как им пользоваться, но здесь интереснее то, как вообще может прийти в голову мысль писать скрипты на C++ — не слишком ли сложно это будет? Оказывается, нет, не очень . Вот уже несколько лет я пишу на C++ скрипты для одной большой и одной не очень большой игры, и меня почти не посещало ощущение, что виной каким-то возникающим при этом проблемам являются язык C++ или связанные с ним скриптовые API. Я много лет программирую на Lua, а до этого пользовался обычным C. Но сейчас современный идиоматический C++ — то, что мне нужно. Причём, я могу писать на этом языке как в самом игровом движке, так и за его пределами, при этом опираясь (буквально) на одни и те же абстракции и оперируя одинаковыми структурами данных. Наконец, C++ просто очень мощный. Правда, я признаю, что о вкусах не спорят, и при работе с C++ также не обойтись без компромиссов.

https://habr.com/ru/articles/919620/

#игровой_движок #c++ #скриптинг

Низкоуровневый скриптинг на C++ для игровых движков

Я постарался охватить только основы, но текст всё равно получился очень длинным. libriscv  — это зрелый эмулятор RISC-V , который в настоящее время используется в игровых движках. Насколько мне...

Хабр

Первый блин. Вещи которые я вынес из разработки своей первой игры

Приветствую, дорогие читатели! Так получилось, что я решил попробовать себя в разработке игр, не ради заработка или написания самой‑самой видеоигры в истории, а просто в рамках хобби. И вот после почти 18 месяцев разработки у меня есть что‑то, что можно с натяжкой назвать игрой и опыт, полученный на ошибках. В игре ещё есть над чем работать, но, к сожалению, я немного перегорел этим проектом — теперь есть желание попробовать разработку на современном движке и разработать что‑то не пошаговое, а более линейное. А свою первую игру я хотел закинуть «в стол», но решил, чтобы добро не пропадало, написать статью. Дать несколько советов на основе полученного опыта. Возможно, это поможет кому‑то сделать свою игру мечты, или поможет избежать моих ошибок, или просто развлечёт вас. Посмотреть игру и понять, нужно ли вообще читать это дальше, можно вот тут: http://f1 136 045.xsph.ru/ — Там бесплатный тестовый домен, так что не удивляйтесь предупреждения от браузера:‑)

https://habr.com/ru/articles/918510/

#Разработка_игр #нейросети #нейронные_сети #игростроение #игры #игровой_движок #процедурная_генерация #игровые_движки

Первый блин. Вещи которые я вынес из разработки своей первой игры

Приветствую, дорогие читатели! Так получилось, что я решил попробовать себя в разработке игр, не ради заработка или написания самой‑самой видеоигры в истории, а просто...

Хабр

Game Engine 3 — оболочка для визуального программирования игр на Python (от идеи до реализации)

Привет, Хабр! Сегодня я хочу рассказать о своём проекте — «Game Engine 3», программной оболочке для создания двумерных игр и приложений. Game Engine 3 — это инструмент для создания 2D‑игр с физикой и анимацией. С открытым исходным кодом, интуитивным редактором визуального программирования на основе нодов и возможностями работы с графикой, физикой и анимацией, он подходит как для новичков, так и для профессионалов. В этой статье разберем, что делает эту оболочку уникальной.

https://habr.com/ru/articles/902426/

#python #game_engine #visual_programming #open_source #сезон_open_source #game_dev #визуальное_программирование #игровой_движок #разработка_игр #разработка_приложений

Game Engine 3 — оболочка для визуального программирования игр на Python (от идеи до реализации)

Разработка приложений стала проще, мощнее и нагляднее Привет, Хабр! Сегодня я хочу рассказать о своём проекте - "Game Engine 3", программной оболочке для создания двумерных игр и приложений. Введение...

Хабр

Игровые премьеры начала года: на что стоит обратить внимание

В мире цифровых развлечений все стабильно. Только эта стабильность не похожа на покой. Спрос на устройства, игровую периферию и на контент всегда высок. Гейминг с каждым годом становится все популярнее. Статистика не даст соврать: игровые консоли продаются так же активно, как и несколько лет назад. В 2024 году в магазинах «М.Видео» и «Эльдорадо» было продано 1,45 млн приставок. А это значит, что количество тех, кто ждет игровых новинок, очень велико. В ближайшие пару месяцев игровая индустрия должна обрадовать геймеров сразу четырьмя громкими премьерами. Две их них очень давно ожидаемы, две другие – новинки, на которые так и тянет посмотреть. Совсем скоро они будут доступны геймерам в сетях магазинов «М.Видео» и «Эльдорадо».

https://habr.com/ru/companies/mvideo/articles/880126/

#мвидео #эльдорадо #игры #игры_для_программистов #игровая_индустрия #игра_жизнь #игростроение #игровые_движки #игровой_движок #игровые_консоли

Игровые премьеры начала года: на что стоит обратить внимание

В мире цифровых развлечений все стабильно. Только эта стабильность не похожа на покой. Спрос на устройства, игровую периферию и на контент всегда высок. Гейминг с каждым годом становится все...

Хабр

Точность позиционирования объектов в играх: возможные ошибки

- Чем чревато брать float или double в качестве типа данных для хранения позиций объектов? - Как это может повлиять на наличие багов в игре и ошибки синхронизации сетевой игры или реплеев? Об этом вы узнаете в этом гайде с наглядными гифками и пруфом на C++

https://habr.com/ru/articles/876816/

#float #floating_point #precision #точность_вычислений #gamedev #разработка_игр #c++ #компилятор_оптимизация #движки #игровой_движок

Точность позиционирования объектов в играх: возможные ошибки

Если вы возьмёте тип float/double для хранения координат объектов, то получите плавные движения по экрану за счёт сохранения дробной части - игровые сущности смогут передвигаться по субпикселям, но...

Хабр

Go в GUI, я создал

Идея сделать игру под Android на Go была неоднозначной, но интересной. Я легко мог представить Go не только в привычной для него сервисной нише, но и в прикладной — его кросс-платформенность и близость к системному уровню в сочетании с простотой пришлись бы там очень кстати. И вот мы здесь — игру мечты я пока не создал, но пару игр попроще сделать удалось. В этой статье я хочу рассказать об инструментах, появившихся по ходу работы. Сами инструменты я объединил в библиотеку Youngine и опубликовал на GitHub. Там же я опубликовал небольшую игру драконово-змеиной тематики по новогоднему случаю как пример основанного на библиотеке проекта.

https://habr.com/ru/articles/874264/

#go #android #ebiten #ebitengine #gamedev #game_engine #разработка_игр #разработка_приложений #игровой_движок #gui

Go в GUI, я создал

Идея сделать игру под Android на Go была неоднозначной, но интересной. Я легко мог представить Go не только в привычной для него сервисной нише, но и в прикладной — его кросс-платформенность и...

Хабр