Это хорошая идея для хранения кода в базе данных? - PullRequest
1 голос
/ 05 апреля 2011

Я пишу игру для социальной сети, и у нас есть много формул для характеристик оружия, характеристик предметов и т. Д., Которые зависят от характеристик игрока. Формулы выглядят как player.money += 10 * player.level

Хорошей идеей было бы просто сохранить такие функции в db и позволить гейм-дизайнеру вводить их через сайт администратора.

Но я не уверен в этом. Какие проблемы могут возникнуть при таком подходе?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 05 апреля 2011

Проблема, с которой вам нужно бороться, заключается не в том, следует ли вам использовать базу данных (вам следует), а в том, как ее правильно оформить. Рассмотрите иерархию объектов, которая у вас есть в игре, и как это отразится на базе данных.

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

Эта модель похожа на эту:

itemId, propertyId, propertyValue

Для более высокой производительности комбинируйте это с чем-то вроде Memcached.

1 голос
/ 05 апреля 2011

Это был бы нормальный подход. Как указал Джон, на самом деле это не «код», а скорее атрибуты предметов / снаряжения.

Плюсы

  • Легко изменить

Против

  • Требуется поиск для каждого предмета или единицы оборудования.

Тот факт, что вы будете искать каждый элемент, может быть узким местом в производительности. Если в конце концов вы решите использовать БД, я бы посоветовал извлечь данные из нее один раз, а затем кэшировать ее, скажем, до конца сеанса. Атрибуты элемента вряд ли будут часто меняться, и это ограничит запросы к базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...