Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ランキングでの割り込み処理が考慮されていない #55

Open
miio opened this issue Feb 11, 2013 · 3 comments
Open

ランキングでの割り込み処理が考慮されていない #55

miio opened this issue Feb 11, 2013 · 3 comments

Comments

@miio
Copy link
Member

miio commented Feb 11, 2013

間に割り込んだ際に、それ以下のランキングが繰り下がる処理がされていない気がする

@miio
Copy link
Member Author

miio commented Feb 16, 2013

このままだとランキングが本気で死んでしまう(1人10プレイ*1000人で1万件のデータ量)ので対策案を

  • ランキングはユーザ単位で持ち、変動しても重複で10位以内に乗らない(多分そんな困らないと思う)
  • ランキングデータはユーザ数分だけ持つ(ハイスコアを記録する感じ)
  • ランダムのタイミングでランキング表示対象データの下限を更新する(0.1%くらいの確率で多分ok)
  • 1000~2000刻みでパーティションを貼り付ける(パーティションまたがる時は逆に遅くなるけど、更新コストより参照コストのほうが圧倒的に高いのを狙って)

多分今の実装からだいぶ変わるけど、ランキング情報をゴニョゴニョ更新する方式からユーザがハイスコア更新するだけになるので変なバグは消えるでしょう。

@miio
Copy link
Member Author

miio commented Feb 16, 2013

このままだとランキングが本気で死んでしまう(1人10プレイ*1000人で1万件のデータ量) の理由として、更新頻度が割りといい感じにかかると思ったからです(プレイ時間短いので、更新のチャンスがかなり増える)

更に、データを割りこませてケツを消して〜とかやってると、やたら変なロック系バグを踏む可能性が高くなると想います(簡単に言うとデータ不整合ですね

あと、可能なら自分のポジションくらい見れたほうが幸せだよねーっていう思いつき(新方式なら多分イケます

@miio
Copy link
Member Author

miio commented Feb 19, 2013

更に仕様系メモ

10位しかいないので、実は100人で5人が廃プレーヤだと多分上位5位くらい占領されると思います。1000人くらいだと全部埋まってもおかしくないんじゃないかなー。

そうなると一般人はモチベ下がるし、何よりも現仕様だと自分の順位すら分からないということで、目標値とか分からないのでは状態。あと、ランキング上がって何かうれしいの?というオチもあるので、そこに別企画をくっつけてもいいかも(これは別途練ってる企画があるのでそちらに紐付けてしまえばokかな?

データ量増えますが、ユーザのハイスコアをもたせてそれをランキングに紐付ける形が良さそう。重たくなりそうな処理は技量と先代の知恵である程度カバーできそうな見込みです。


技術メモ

ハイスコア更新型

ハイスコアを更新するとスコアランキングも更新される

ハイスコア更新型だと、データ件数がユーザ数分になるので10万件くらいあるとちょっとがんばらないとまずい

スコアパーティションを割り当てるGREE方式で多分余裕

問題は更新ロックで該当ランク10位分のユーザが硬直するタイミングがあることくらいか?→スコア更新キューを入れて速攻で更新させればよさそう(スコアの参照範囲が広がるので、ターン更新中にやるよりはトランザクション短くできるキューに投げてしまえばマシになると思う

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant