CyberGrad 2033 Архитектура: Ecs

Предыдущий пост: CyberGrad 2033

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

Основные сущности, на которых все держиться: Энтити, компоненты, системы и сервисы.

Entity
Это класс, наследник Node, в нем я реализовал методы добавления/удаления компонентов.
На старте энтити пробегается по своим чилдам и если они являются компонентами, добавляет в словарь.

Components
Это тоже наследник Node, потому что я хочу иметь возможность добавлять компоненты через редактор
Компоненты не содержат логики (хотя никто не запретит), толко данные и могут содержать ссылки на другие ноды

Systems
Тут происходит вся логика с энтитями, но только с теми, которые попадают под фильтр этой системы.
У систем есть несколько коллбэков, которые имплементируются интерфесами
IInitSystem — вызовется один раз при старте игры
IDestroySystem — вызовется один раз при завершении
IEntitiesAdded — вызывается когда появляется новый энтити, подходящий под фильтр системы (только один раз)
IEntitiesUpdate — вызывается каждый кадр и содержит всех энтитей подходящих под фильтр
IEntitiesPhysicsUpdate — то же самое но каждый апдейт физики
IComponentsRemoved — вызывается когда энтити больше не подходит под фильтр

Services
Немного походяд на системы, но если система работает с энтитями, то сервисы это просто утилитарные классы, которые могут делать что угодно. К примеру AudioService — который воспроизводит звуки в игре.
Сервисы умеют в следующие интерфейсы:
IInit — на старте игры один раз
IUpdate — каждый кадр
Читать дальше

CyberGrad 2033

Начал пилить игру перед самым новым годом, буду выкладывать тут прогресс (а может и не буду)


Жанр: Топдаун шутер
Сеттинг: Ближайшее грустное будущее в мухосранске провинциальном городке
Сюжет: ЧатГПТ 6 захватил склад Амазон и теперь клепает из бытовых товаров истребителей кожанных мешков. Робот пылесос с ножом на изоленте — один из простых врагов.
Главный герой — отважный курьер, который должен доставлять заказы в этом опасном городе.

Специально для этого проекта запилил ECS, FSM и Dependency Injection
Очень нравится как получилось сделать архитектуру, может быть потом распишу

Видос

С новым годом, булчане!

Этот год был непростым (впрочем, как и все где-то после 2020, и я не про математику), ну что поделать. Желаю всем заниматься любимым делом, оставаться молодыми в душе, чтобы глаза горели от энтузиазма (молодость, геймдев, хардкор, Мытищи — вы всё знаете), и поменьше сталкиваться со всякими трудностями.

Тем кто пилит игры — отдельное пожелание успешно довести их до релиза!

Kotlin, KorGE и корутины для организации игрового цикла.

Я вчера решил ради интереса посмотреть движок KorGE. Он довольно простой, для 2д игр, поддерживает сборку под разные платформы типа мобильных и веб.

Что меня заинтересовало — в нём активно используются корутины!
Читать дальше

Пилю физический движок и автосимулятор на нём.

Кажется, я уже перерос libgdx и он сейчас больше мешает, чем помогает. Кто-то писал что к godot легко прикрутить свой физический движок — жду в комментариях рассказа как это сделать и ссылок с примерами.

Читать дальше

Angelscript: где он обитает и с чем его едят

Здарова, пекари.

Решил вытащить обсуждение из тг чата в альфабулчанск. Оказывается Angelscript существует уже очень давно, а с ним даже успел поработать MrF в своём самописном движке. Слышал Кнайт биндинги к Xors3D делал.

С чего вообще сыр-бор: недавно вот наткнулся на сабж angelscript.hazelight.se/
Я тут в свободное время крайне медленно пилю «игру мечты» на UE5, и хотелось чего-то среднего между крестами и блюпринтами. А тут вот это нашёл и выглядит очень вкусно на первый взгляд.

Вопрос булке: как вам вообще ангел? стоит свеч? какие подводные?
А вдруг кто-то прямо с этим плагином тут работал? если да, то вообще очень круто. Если нет то буду первым, потом тут расскажу.

А что расскажу? Вкратце, хочу интегрировать Angelscript в Lyra-подобную data driven архитектуру, выкинув оттуда откровенно архитектурный булщит.

Топик о возможностях и проблемах статической типизации

Я тут на скале попробовал написать код, чтобы компилятор знал про размерности как в системе СИ, и догадывался, что скорость, поделённая на время — это ускорение. И не давал его складывать с чем-нибудь другим.
(Сам пост тут, сори мне лень из маркдауна в форумный вид форматировать, может потом попробую, да и статья немножкно не об этом).

Так вот, идея размерностей проиходят на физике в шестом классе. Компиляторы развиваются полвека как минимум.
Но почему, блин, я такую относительно простую концепцию смог записать только в довольно простом виде только сейчас и на немейнстримном языке?
На части языков это невозможно, на части языков придётся через числа Чёрча изобретать арифметику заново и писать нечитаемый код. Ещё на С++ на шаблонах можно, но сам по себе С++ можно назвать одним большим извращением.

А казалось бы задача не сложная — параметризовать шаблонный тип целыми числами и делать арифметические операции в compile time. Всё.

Я тут решил сделать топик

Здарова орлы, посмотрим чё тут за булчан новый.

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

давайте оттестируем как тут топики делать

вот например хочу поделиться смешнявой видеозаписью с соцсети ютьюб:

#1. Devlog вводный

Привет, пекари, расскажу небольшую историю про создание этого сайта.

Давно висевшая идея всё хотела выхода и, сначала были дерзкие мысли запилить свой хабра-образный движок, но практика показывает, что энтузиазм это очень временное топливо, которого не хватит даже на минимальный прототип. Значит надо отталкиваться от готовых решений. Значит пора искать такое


Читать дальше

Привет, булка

Привет, друзья!

Давно висит в воздухе идея, что нам нужен новый сайт, бегло был выбран LiveStreet, и теперь у нас есть возможность попробовать такой формат.

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

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

Пишите идеи и предложения