遊戲伺服器開發 簡單排行榜功能問題,基於mysql

2021-10-03 02:26:20 字數 759 閱讀 5935

最近在找工作,本人還是希望回遊戲行業的,投了半天抓到乙個面試機會,面試題是乙個遊戲排行榜功能,其中只需要客戶端id,分數這兩個字段。

我看到這個題的時候心想簡單的一批,就沒細想可能會出現的一些問題, 查了一下django的文件就開始一把梭,建立一張表,客戶端id,分數兩個字段。

查詢排行榜指定的位次段:

select id,score from user_score order by score desc limit %v1%,%v2%;
當然,當時是用django的orm寫的

models.score.objects.all().order_by('-score')[rank_begin:rank_end]
問題來了:

問:如何獲取到客戶端本身的位次?

當時沒用腦子的我想的是取出所有資料,排序後去遍歷獲得客戶端的index

問:當資料量非常大的時候,怎麼辦?

答:建索引

然後問了一些mysql相關的知識

果不其然被拒了!!

現在想想,在查詢客戶端本身的位次時,我是有客戶端的分數的,即我可以通過這個分數,來查出來比當前分數大的有多少客戶端,再+1,就是客戶端的排名了。

select count(*) from user_score where score >= %score%;

遊戲服務端開發 排行榜

排行榜幾乎是每個網路遊戲都有的系統,以下用erlang以例,分享一種排行榜實現方式。每個排行榜對應乙個actor,state使用如下結構 通用排行榜結構 record rank list,已經排好序的列表 ready list one rank 待排序的列表 sort time 0 排行榜的重新整理...

遊戲服務端開發 排行榜演算法比較

以前在 做過一些實時投票,積分排名 單曲 等排行榜 遊戲中也有類似的戰鬥力排行 sns的遊戲又有好友排行等,對於此類的排行演算法在此做個總結。需求背景 檢視前top n的排名使用者 檢視自己的排名 使用者積分變更後,排名及時更新 方案一 利用mysql來實現,存放一張使用者積分表user score...

遊戲伺服器開發 準備篇 初識遊戲伺服器開發

近期轉換了工作方向,從web開發走向了遊戲開發。此前的工作中,主要負責web分布式專案的開發,rest服務開發,幷包含一部分im系統的開發。分布式系統框架,資料庫,nosql接觸的比較多,比較雜。而新工作比較單一,主要負責遊戲伺服器的業務開發。使用的也是前輩封裝好的框架。後來發現,原來全公司都使用了...