[wizs] 最近有 mud 提到人數上限跟 lag 問題

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間15年前 (2011/03/02 15:43), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
聖殿大致是採底下方式解決... 一、先改良玩家及怪物的心跳函數內容及部份設定 因為這是每一個 tick time 都會做的東西, 一個 mud 會不會 lag, 這是蠻關鍵的. 二、取消大部份怪物身上的武防設定 減少被載入物件數. 這個其實可用其它方案替代 三、藥水虛擬化 一樣是減少被載入物件數. 四、更換 mudos 版本及改善 config 檔設定 讓聖殿變得較適合跑比較多人 五、減少使用 call_out 這個對 mud 的流暢度有明顯改善 六、改善對系統負擔頗重的戰鬥系統相關函數及呼叫方式 這個是關鍵, 因為聖殿在線角色數很多而且大多都在練功 七、改善常用指令的程式內容 常用的就是 look, chat, 走路, 技能指令, score, hp, ... 八、提高網路頻寬 這個主要是讓聖殿擁有能跑更多人數的基本條件 九、改善訊息顯示方式 盡量多用 str 累加再一次顯示的方式, 減少重覆性的 write 十、no_damage_msg 及 no_environment_msg 11、改善玩家登入流程 這可以允許聖殿在重開機時就一次登入 2xx 個角色,也不會   造成系統過重負擔. 12、針對玩家常去的區域、以及常使用的技能做最佳化   因為有些區域跟技能就是玩家較常用的 13、將心跳頻率由 1 秒改為 2 秒 這個其實也蠻關鍵的, 以前 1 秒跳一次時常常在 crash, 改 成 2 秒後情況就改善很多. 14、改善 who、checking、searchobj 等全域指令的寫作方式 大概就這些。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 115.83.183.151

03/02 20:22, , 1F
第九點能再詳細一點嗎?蝦米str?
03/02 20:22, 1F
write("訊息一.\n"); write("訊息二.\n"); 這個盡量不要(等於一次呼叫三個 write 函數) write("訊息三.\n"); write("訊息一.\n"+ "訊息二.\n"+ 目前常見寫法 "訊息三.\n"); write("訊息一.\n訊息二.\n訊息三.\n"); 雖然不錯但是閱讀難度增加 write(@LONG 訊息一. 訊息二. 偶爾可用的 訊息三. LONG); dfire 的常見寫法也可參考 write("訊息一. 訊息二. 訊息三. ");

03/02 20:59, , 2F
大概是指請先用str=str1+str2...然後一次write..
03/02 20:59, 2F

03/02 20:59, , 3F
不要write好幾次...
03/02 20:59, 3F
目前比較推廣多多使用 sprintf 來處理字串累加, 因為你每做 一次 str+= 就等於多使用一次運算(就是那個 +). 我自己早期的寫法比較不重視 sprintf 的使用, 中後期比較常 用. 例如.. str+=ppl->query("chi_name")+"("+ppl->query("name")+").\n"; 改成.. str+=sprintf("%s(%s).\n",ppl->query("chi_name"),ppl->query("name")); ※ 編輯: laechan 來自: 122.117.3.82 (03/03 00:47)
文章代碼(AID): #1DRVKXya (mud_sanc)
文章代碼(AID): #1DRVKXya (mud_sanc)