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

В связи с этим появилась идея думать об игровых объектах именно как об объектах в ООП - то есть, как о комбинации данных (Локатора, хранящего состояние) и поведения (таблиц, описывающих бизнес-правила). Тогда получается, что одну и ту же таблицу/набор-бизнес-правил можно будет “прикреплять” к разным Локаторам и таким образом получать разные отдельные экземпляры игровых объектов.

Получается, что таблицы задают “тип” объекта, а если их еще и динамически как-то “прицеплять” к Локаторам, то можно подумать в сторону ECS (Entity Component System), чтобы более-менее стандартно обрабатывать такие объекты в игровых движках.

Пока выглядит так, что для реализации этой идеи потребуется каким-то образом передавать в таблицы аргументы для расчета (т.е. передавать экземпляр Локатора, применительно к которому нужно осуществить расчет). Либо организовать какое-то особенное построение контекста вычислений, в котором будет задан этот “базовый” Локатор.

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


Насчет ECS оставлю тут ссылочки: