Алгоритм MongoDB для игры по сбору объектов - PullRequest
1 голос
/ 10 января 2012

Я создаю игру.Частью игры является сбор предметов.Вы получаете очки за «разнообразие», поэтому у каждого объекта в категории есть свойства.Если вы собрали объект с определенным свойством, множитель для этого свойства больше не применяется ни к одному из других объектов со свойством.Очки рассчитываются путем комбинирования всех уникальных значений для каждого собранного вами свойства, а затем умножения на коэффициент для этого свойства.Например:

Points
Category: Toys
Base: 2
Shape: 7
Material: 10
Color: 5

Bouncy ball:             Snow Globe:
category: sphere         category: sphere    
shape: round             shape: round
material: rubber         material: glass
color: swirls            color: clear

Collected:
bases = my_objects.length * base = 2 * 2 = 4
shapes = array('round').length * 7
materials = array('rubber', 'glass') * 10
color = array('swirls', 'red') * 5

score = bases + shapes + materials + color = 4 + 7 + 20 + 10 = 41

Объекты хранятся в виде документов nosql (mongodb).Мой вопрос заключается в том, каков наилучший способ выбрать все оставшиеся объекты из базы данных, в порядке того, какие несобранные объекты будут добавлять наибольшее количество очков к баллу пользователя.

Ответы [ 2 ]

0 голосов
/ 14 января 2012

После дальнейшего изучения проблемы, кажется, моя цель не имеет значения. Как только что-то будет собрано, весь порядок, в котором объект приносит наибольшее количество очков, резко изменится, поэтому нет смысла упорядочивать в первую очередь.

0 голосов
/ 10 января 2012

сохранить итоговую сумму в документе, а затем вы можете отсортировать по убыванию (используя индекс при желании)

вы не можете "сортировать по + b + c" в монго, так что это, вероятно, лучше всего

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