Вот текущий график зависимости (с нарисованными от руки кругами для TheTXI )
В игре есть игроки и одна доска, которой они делятся.
Игрок также имеет доступ к доске, чтобы иметь возможность добавлять / перемещать / удалять юниты с нее.
Игрок имеет доступ к принадлежащим ему юнитам, как на доске, так и за ее пределами (юнит также знает своего владельца, но его, вероятно, можно удалить и просто выполнить поиск).
На доске есть юниты, и они знают позиции юнитов.
У юнитов есть способности (возможно, игроки тоже могут)
Самое большое, что мне трудно понять - это способности юнита. Они должны иметь возможность влиять на что-либо в игре, исцелять / наносить урон игроку / юниту, менять положение вещей на доске, возможно, даже на саму игру (пока в этом нет необходимости, но она может возникнуть).
Как я могу иметь способности, которые могут повлиять на что-либо, не имея ссылки на все? Я понимаю, что каждая способность может и должна иметь ссылки только на то, что ей нужно, но у класса юнитов есть встроенные способности, поэтому, если способность юнита влияет на доску, ему нужно каким-то образом получить ссылку на доску от юнита?
Я пытаюсь сделать дизайн как можно более гибким, потому что правила еще не установлены (мы создаем игру, и все еще довольно рано, поэтому попробуем кое-что, посмотрите, каково это, меняйте правила, пока игра не покажется вам правильной)
Даже несмотря на то, что доска / карта вообще все еще в воздухе, поэтому отряды должны быть отделены от того, чем они являются в настоящее время. Там нет ни глобального состояния, ни какого-либо «божьего объекта» (пока), и я бы хотел оставить его таким.
В частности, речь идет о веб-приложении на Python, поэтому, хотя сам вопрос не зависит от языка, любая специфика, основанная на динамическом языке с функциями первого класса, безусловно, приветствуется.