Да, я думал об этом, но вскоре понял, что другого предметно-ориентированного языка (DSL) будет слишком много.
По сути, им нужно взаимодействовать с моим игровым состоянием, возможно, непредсказуемым образом. Например, у карты может быть правило: «Когда эти карты входят в игру, все ваши миньоны-нежити получают +3 атаки против летающих врагов, кроме случаев, когда враг благословен». Поскольку игры с карточными играми основаны на поворотах, GameState Manager будет запускать события OnStageX и позволять карточкам изменять другие карточки или GameState так, как нужно карточке.
Если я пытаюсь создать DSL, мне нужно реализовать довольно большой набор функций и, возможно, постоянно обновлять его, что переносит работу по обслуживанию на другую часть, фактически не удаляя ее.
Вот почему я хотел остаться с «настоящим» языком .NET, чтобы по сути иметь возможность просто инициировать событие и позволить карте манипулировать игровым состоянием любым способом (в пределах безопасности доступа к коду).