這是情況的低谷。我正在用PHP創建一個角色扮演遊戲。戰鬥系統由各種buff和debuff組成。戰鬥可能需要花費數輪(這是針對AI)。緩存數據與重新計算PHP中的數據
我是兩個主意,保證了玩家的數據的正確性(BUFF和DEBUFF到期隨着時間的推移,一個+5強度的buff可能只持續1回合)。通過這些用戶的數據和變化獲取從項目,設備,被動技能他的數據的字符序列初始化我能
1)進入,然後赤身裸體,存儲在會話中添加。如果buff存在,我就應用它。如果沒有,它就消失了。這樣,數據的正確性就可以保證性能的提高......我假設。
2)將整個字符數據存儲在會話中,並更新愛好者。當增益激活時,我添加修飾符,如果debuff/buff消失了,我必須記得'回滾'或者清理掉buff中的任何效果。我認爲這對數據庫不太重要,但是很難確保正確性,因爲可能會有這麼多不同類型的增益。
所以在
一)數據庫的開銷 二)作戰系統 三)行業慣例對這種情況下的可維護性,
請問上述兩種溶液票價方面?還有更多我不知道的事情嗎?我正在考慮使用用戶模式來實現#2,但是因爲網絡是無狀態的,似乎會增加更多開銷。
的統計數據是相當龐大的,至少> 30個屬性(由玩家最隱藏;只是用於內部計算)。真正的問題是如果我緩存字符數據,當buff/debuff消失時,我必須將「de-init()」應用於緩存數據。而如果我使用解決方案#1並從DB重新計算角色的屬性(基於EQ等),我不必去掉一個BUFF。 – Extrakun 2009-09-09 05:12:42