← Капитанский журнал

Плагин, которого не должно быть — почему мы запретили плагины под конкретные игры

TurtlePlugin был анти-паттерном, который научил нас: плагины — это универсальные механики, а не хаки под конкретную игру.

В какой-то момент кто-то создал TurtlePlugin. Это был плагин, спроектированный для одной конкретной игры. В нём была захардкоженная логика для одного конкретного набора правил. Это было началом конца — или было бы, если бы мы не поймали это вовремя.

Правило абсолютно: плагины — универсальные механики. Карты, ходы, ресурсы, рандомайзер, голосование. Это строительные блоки. Они не знают ни об одной конкретной игре и никогда не должны. Плагин карт не знает про Покер, Войну или Дурака. Он знает про колоды, руки, доборы и перетасовки.

Плагины под конкретные игры — это ловушка. Они кажутся эффективными — «я просто быстро сделаю плагин для этой одной игры» — но они отравляют архитектуру. Внезапно движок знает про конкретные игры. AI не может переиспользовать механики между играми. Каждая новая игра требует новых плагинов, и каталог взрывается.

Запрет обеспечивается структурно: ни в одном месте кодовой базы нет упоминания какого-либо плагина по имени. Движок загружает плагины обобщённо. AI ссылается на них по возможностям, а не по идентичности. Если нельзя удалить плагин, не сломав что-то — вы уже проиграли.

TurtlePlugin был удалён. Его легитимная функциональность была отрефакторена в существующие плагины cards и turns. Игра, которую он обслуживал, была перестроена из универсальных блоков. Это заняло больше времени, но результат оказался чище и гибче.

Это одно из тех правил, которые кажутся ограничивающими, пока не поймёшь, что это единственное, что спасает каталог плагинов от превращения в кладбище одноразовых хаков.