Relict Engine: Атомы

Знаю, что хотел заняться GameFramework, однако немножко отошел в сторону и решил подумать, как можно упростить себе жизнь. И придумал (подсмотрел, естно) Атомы.

Атом это простой класс, с минимальным функционалом. Он не наследуются от Object и не должен быть использован as-is, а только в качестве родителя для класса, который в свою очередь наследуется от Object на прямую, или через посредника.

Relict Engine: Атомы Разработка, Gamedev, Инди, Игровой движок
Relict Engine: Атомы Разработка, Gamedev, Инди, Игровой движок

Класс атома выглядит примерно так

Через атомы, нашему классу объекта можно передать дополнительный функционал (например Атом из примера выше дает возможность объекту "тикать"). Также, для более быстрого и простого управления отдельным функционалом, который передает нашему классу Атом, у него есть контроллер (для каждого типа атома свой). Который знает обо всех объектах с конкретным атомом. И через который можно этими классами управлять.

Relict Engine: Атомы Разработка, Gamedev, Инди, Игровой движок

Пример простого тик контроллера для атома TickableObject

Таким образом, мы можем разбить объекты на определенные логические группы, и в нужный момент времени, нам не придется перебирать все созданные объекты в общем листе, но только по группе, атом которой присутствует в объекте. Ну или можно скопом обратится ко всем объектам, как это делает ObjectTickController.

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

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

Ну а конкретно сейчас, я занимаюсь подключением Lua и подключением класса в ее vm (собственно почему мне атомы и понадобились)

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"