私はゲームを作っています。ゲームの一部はオブジェクトを収集することです。カテゴリの各オブジェクトがプロパティを持つように、「多様性」のポイントを取得します。特定のプロパティを持つオブジェクトを収集した場合、そのプロパティの乗数は、そのプロパティを持つ他のオブジェクトに適用されなくなります。ポイントは、収集した各プロパティのすべてのユニキュー値を結合し、そのプロパティの係数を掛けて計算されます。例:オブジェクト収集ゲームのためのMongoDBアルゴリズム
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)として格納されます。私の質問は、収集されていないオブジェクトがユーザーのスコアに最大のポイントを追加する順序で、データベースから残りのすべてのオブジェクトを選択する最善の方法です。まだ
各文書のスコアは、ログインした人物と以前に収集したものによって異なります。ドキュメントに保存するには、ユーザーが新しいオブジェクトを収集するたびに、何百万ものオブジェクトのスコアを再計算する必要があります – chris