Ну мне кажется вынести логику в поле БД - только усложнит поддержку. В
любом случае ее нужно протестить, написать, это все делает
программист. Так почему просто не написать эту логику на Python, это
будет легче поддерживать и понять.
Саму логику я и хочу писать на Пайтоне, в бд я лишь хочу хранить набор правил, просто хотелось бы правила сделать более гибкими, что ли.
Вообще в карточных играх не такая уже и разнообразная логика. Есть определенные типа карт, определенные типы взаимодействия. Меняются только названия эфектов и количественные показатели.
Не всегда. Возьмем, например, карту "Стиморол - морозная свежесть!" применять её можно будет по-разному. 1. Сжевать и получить в текущем ходу +2 к атаке (холод), дополнительно +2 к атаке против рептилий. Налепить на меч и получить +1 к атаке (холод) на 3 раунда. 3. Налепить на противника, и его доспех получает шанс 15% сломаться от тупого удара.
Безусловно, можно всю эту "кучу эффектов" разбить на набор свойств.
- on_sword=+1(cold)
- on_hero=+2(cold). advanced_bonus_reptily=+2,
- on_armor=crit_chance+15
А в админке просто через many_to_many навешивать такие "флаги".
Но в итоге правил будет тысяча, и выбрать среди них нужное - убьешься... конечно можно сделать фильтр при добавлении флагов и всё такое. Это частично решит проблему. Но мне кажется было бы проще если эти флаги, грубо говоря, печатать для каждой карты.
Возможно вам тоже стоит с этого начать, чтобы был готовый движок для карточной игры, а потом уже добавлять логику.
Я и пишу сначала основу, формирование сражения, колоды и всё что требуется сопутствующего. Просто не люблю триста раз переделывать модели, потому забегаю вперед немного. К тому же "отдаленно схожая задача" требуется еще и по работе. Потому и рыщу в поисках ответов :)
Ну и попробуйте спросить на форуме геймдевов, просто узнать подход, язык уже роли не играет.
А вот про геймдев не подумал совершенно. Большое спасибо за совет!