Разработка собственного игрового движка: итоги 2023 года
Мод для Thief: The Dark Project - The Black Parade на моём движке Force Tech

Как раз в конце прошлого года я начал вести публичные каналы, посвященные моему игровому движку - Force Tech. Прошел ровно год, и именно за этот прошедший год, пожалуй, и произошло больше всего положительных изменений в проекте, из-за более тесного контакта с сообществом. Особенно хотелось поблагодарить Артёма Башева за регулярные пожертвования и M…

6969

Сам интересуюсь темой ECS. Хотелось бы статью с большим кол-вом технических деталей. Очень интересно узнать, как у вас готовят ECS. Архетипы или SparseSet? Как решаете проблемы с графами и иерархическими структурами данных? Используете ли для обмена данными между системами какую-нибудь систему событий? Смотрели ли в сторону готовых реализаций, например entt?

1

Судя по твоему вопросу, ты знаешь о ECS куда больше меня 😅. Я использую entt. Получается, SparseSet?
Что касается событий - пока что обхожусь тегами, но я пока нахожусь только на начальном этапе, возможно, когда дело дойдет до реализации более сложных систем и взаимодействий, присмотрюсь к встроенной в entt системе событий. Хотя использование событий противоречит архитектуре "конвейера", которую я выбрал.
По поводу иерархии, я просто воспользовался советом автора entt: если у тебя в руках молоток, то это не значит, что всё вокруг - гвозди 😉. Поэтому ничтоже сумняшеся использую иерархические структуры. Да и вообще, не гнушаюсь кэшировать нужные данные в отдельных сервисах. Даже придумал "внутренние соглашения", которые позволяют не путаться самому, что такое "система", что такое "плагин" и что такое "сервис"...

1