2014 8 15 精確隨機掉落

2021-09-07 12:08:42 字數 854 閱讀 9004

這個標題是否有些矛盾,又希望隨機掉落,又希望精確掉落,是不是不好理解?

實際上在遊戲經濟系統中,這個演算法是必須實現的,意思是: 相對個體玩家,物品掉落是隨機的, 可是相對整個server,所掉落的物品總量和總價值是精確的,這樣才幹達到精確控制整個遊戲經濟系統的目的系統,這種物品掉落管理系統,不是簡單地呼叫一下隨機數生成就能解決的.

譬如,我在**中指定,a裝備相對個人的掉率為0.1%,也就是說單個玩家每殺死1000個怪物,才可能掉落該裝備一次,假設採用簡單的多面骰演算法,或許玩家殺1000個怪物掉落了較多次(運氣好時),或許一次都不掉落(運氣不好時),這樣遊戲的經濟系統就失去了控制,無法達到精確管理的可能,應該達到的需求是: 必須能確保玩家每殺1000個怪物才幹掉落1次,不能多,也不能少. 這就是遊戲物品掉落系統的精確隨機掉落.

另附: 在開發過程中發現,因為涉及到物品等級匹配,精確掉落無法做到下限可控,僅僅能做到上限可控,也就是說,對於a裝備,僅僅能控制其在遊戲中的掉落小於等於所指定概率. 形成這個情況的原因是: 因為我採用了"生產->消費"模型,當乙個玩家須要拾取被殺死npc掉落的物品或者開啟乙個箱子時,生產線出口位置處的當前物品並不見得符合被殺死npc或被開啟箱子的級別,此時所生產的物品將**空放棄,從而導致無法控制下限.此問題能夠通過建立乙個buffer的方式緩解,可是因為buffer不能過大,所以還是無法徹底解決.

事實上這個問題依據遊戲的"玩家吃虧"原則,也不算作問題了.

另另附: 本來開發這個服務的時候,我感覺能夠非常快搞定,僅僅是在開發的過程中越來越感覺到這個服務的重要性,它一旦出現紕漏,將可能導致整個遊戲的經濟系統出現故障甚至崩潰,所以我認為略微投入多一點時間是非常值得的.如今這個服務已經支援對每個玩家賬戶建立物品和貨幣的收支台賬,以構造最大可能的容錯性能.



Linux Vim 隨用隨學隨記錄

一般模式 複製 yy 游標向上 k,10k 向上10行 游標向下 j,10j 向下10行 游標向左 h,5h 向前5行 游標向右 l,5l 向後5行 向下翻半頁 ctrl d ctrl down 向上翻半頁 ctrl u ctrl up 整頁上翻 ctrl d ctrl down 向上翻半頁 ctr...

RandomStringUtils生成隨機數

org.apache.commons.lang.randomstringutils 產生5位長度的隨機字串,中文環境下是亂碼 randomstringutils.random 5 使用指定的字元生成5位長度的隨機字串 randomstringutils.random 5,new char 生成指定長...

RandomStringUtils生成隨機數

org.apache.commons.lang.randomstringutils 產生5位長度的隨機字串,中文環境下是亂碼 randomstringutils.random 5 使用指定的字元生成5位長度的隨機字串 randomstringutils.random 5,new char 生成指定長...