[wizs] 最近有 mud 提到人數上限跟 lag 問題
聖殿大致是採底下方式解決...
一、先改良玩家及怪物的心跳函數內容及部份設定
因為這是每一個 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
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
03/02 20:59, 2F
→
03/02 20:59, , 3F
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)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
15
19