作者laechan (小太保)
看板mud_sanc
标题[wizs] 最近有 mud 提到人数上限跟 lag 问题
时间Wed Mar 2 15:43:26 2011
圣殿大致是采底下方式解决...
一、先改良玩家及怪物的心跳函数内容及部份设定
因为这是每一个 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
1F:推 HighElf :第九点能再详细一点吗?虾米str? 03/02 20:22
write("讯息一.\n");
write("讯息二.\n"); 这个尽量不要(等於一次呼叫三个 write 函数)
write("讯息三.\n");
write("讯息一.\n"+
"讯息二.\n"+ 目前常见写法
"讯息三.\n");
write("讯息一.\n讯息二.\n讯息三.\n"); 虽然不错但是阅读难度增加
write(@LONG
讯息一.
讯息二. 偶尔可用的
讯息三.
LONG);
dfire 的常见写法也可参考
write("讯息一.
讯息二.
讯息三.
");
2F:推 justinj :大概是指请先用str=str1+str2...然後一次write.. 03/02 20:59
3F:→ justinj :不要write好几次... 03/02 20:59
目前比较推广多多使用 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)