Задать вопрос
@siRius32

Как организовать структуру игры Монополия на ECS?

Игра аналогичная монополии с поочередными ходами игроков, каким образом составить структуру сущностей, компонентов, систем и обеспечить пошаговость в игре. Хотелось бы примерно понять правильное направление, т.к. попытки написания заводят в тупиковые ситуации. Игра на libgdx + Ashley. p.s. возможно уже есть какая то реализация подобных игр на github?
  • Вопрос задан
  • 215 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
@MarkusD
все время мелю чепуху :)
Самой главной ошибкой начинающих работать с ECS людей является попытка засунуть в ECS сразу и вообще всё.

У тебя игра по типу монополии. Что есть в монополии?
В игре заявлены игроки, дискретное поле, активы и события. Еще могут быть заявлены дополнительные правила.
Игроки и активы имеют свои эффекты и могут быть деактивированы событиями. Собственно, это и есть сущности игрового ECS-мира.

И тут важно понять, что не сами игроки и активы являются сущностями ECS, а лишь свойства игроков и активов являются сущностями.
Сами игроки являются внешними к ECS, для каждого игрока в ECS заводится сущность, идентификатор которой сразу прикрепляется к объекту игрока. Теперь игрок может взаимодействовать с миром игры через данные своей сущности. Точно так же делается и для активов.

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

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

Войдите, чтобы написать ответ

Похожие вопросы