[技术文章] 传奇版本M2服务端优化,减轻服务器负担

[复制链接]
查看4470 | 回复4 | 2020-10-9 19:45:55 | 显示全部楼层 |阅读模式
  关于版本优化的相关建议很多人经常说:我和别人是一样的版本,为什么我的游戏卡,他的游戏不卡,是不是你们引擎不行?其实道理很简单。抛开服务器质量的缘故,以及引擎自身的不足,版本导致的游戏卡占了很大的比重。下面就如何对版本进行优化做一点简要的说明。仅供大家参考。

  【关于M2的相关设置】
  1、M2选项-性能设置-怪物处理控制-处理间隔。
  数字越大,怪物行动越迟钝,CPU占用越低。
  数字越小,怪物行动越灵活,CPU占用越高。
  这里的CPU的高低,大家都明白,是决定游戏是不是卡的缘故之一。
  2、很多游戏爆出装备的时候。事无巨细,甚至某种85合击的版本一瓶太阳水掉落在地上,也要全服公告。这样的文字提示,肯定也会给M2增加负担,建议取消这些无意义的物品掉落提示。

  【关于怪物的刷新】
  D:\Mirserver\Mir200\Envir目录下的MonGen.TXT文本为怪物刷新脚本。这个脚本看起来很简单。[地图 坐标X 坐标Y 怪物名字 刷新范围 刷新数量 刷新时间]表面上看按照这个格式对号入座即可了,其实不然。
  很多人写版本图省事,所有的怪物一律统一刷新时间,BOSS全部30分钟一刷新,小怪全部10分钟刷新一次。如果你全部设置了10分钟一刷新,那么M2每10分钟就要全局的检测一次,目前所有游戏里存在的10分钟刷新的怪物数量与MONGEN中设置的是否相符。如果不相符会补齐,要在一个时间内同时做出这么多的检测,M2的负担可想而知.建议将这些怪物的刷新时间分散开,比如11分钟 12分钟。这样M2在一个时间内执行的检测与补充就会少一些,运算负担就会减少一些。
  有些人写版本把一个地图内所有的怪物刷新坐标点全部设置在一个位置。这样的话,M2的分析处理能力势必会被拖累。,刷新坐标点也都区分开,一个坐标不要刷新太多的怪物。否则你也会出现,本来设置刷100只怪,结果只有60只。
  还有一些版本只有50~60个人玩,但是刷怪设置了5~6万只怪,那么平均折合一个人要消灭掉1000只怪,这现实吗。肯定不可能的。没事儿的时候大家可以对比一下,游戏在刷新1万只怪所产生的CPU占用大小与刷新5万只怪所战胜的CPU占用大小,那绝对是5倍的数值。
  还有关于游戏自助刷怪升级的脚本,这个脚本千万尽量不要存在在游戏里,这个是一个坑爹的功能。尤其刷怪练级的脚本。当几个刷怪NPC在哪里不停的刷的时候,M2负担极大,游戏不可能不卡。

  【关于机器人脚本】
  D:\Mirserver\Mir200\Envir\Robot_def目录下为机器人脚本。
  AutoRunRobot.txt为触发命令脚本
  RobotManage.txt为执行命令脚本
  当触发命令脚本中一秒一执行的命令出现的情况下、游戏就会变卡,并且游戏里玩家越多,将会余越卡,建议大家取消掉1秒一执行的机器人脚本,如果有必要存在的话,那么修改为5秒,乃至10秒等延长时间。

  【关于个人定时器】
  很多版本中的个人定时器使用的很不科学、上线就开始触发个人定时器,搞一个安全区在线泡点,并且一秒一执行,当人多的时候一起执行当然会非常卡。尤其玩家在带着个人定时器等计时命令的时候,在进行PK或者打怪等动作的时候,就需要通过游戏网关向M2不停的传送数据,M2在不停的分析数据反馈给游戏网关上的玩家,这样一来,M2的负担大了,游戏自然就变卡了。
  建议取消:安全区泡点,将泡点最好划分开不同地图,尽量一个泡点地图里不要存在太多的人。这样游戏就不会那么卡了。
  另外:很多人的个人定时器都是1秒一循环。然后给100万经验。建议大家转换个思路,修改为5秒一循环,给500万经验。这样循环的次数少了,M2的负担就减轻了。

  【关于GOTO的使用】
  GOTO越多,游戏的循环会越多。有些版本表面看着很简洁。使用了很多GOTO,其实这样一来循环就会很多。大家都知道当计算出现死循环的时候,系统是直接崩盘,那么游戏出现死循环的时候,会直接M2死掉。能用DELAYGOTO替代的尽量用这个替代,不能用这个替代的尽量用其他思路取代。
  能在当前脚本完成的功能尽量不要#CALL到别处完成。减少GOTO使用率对于版本优化是一个很重要的一步。
  尽量优化版本,而不是通过修改M2(!Setup.txt) ScriptGotoCountLimit参数,让GOTO一直执行,太多GOTO会使M2直接关闭

  【关于版本中的NPC】
  有的GM总说自己的游戏加载的时候好慢,或者关闭的时候好慢。这些人的游戏里NPC刷新达到600~700个。这些NPC有多少是没有用的?有多少NPC是玩家一辈子都点击不到的?加载这些东西,然后在保存这些NPC产生的数据,会不浪费时间吗?如果这些NPC里留下一个小小的后门,你找出来是不是也浪费你的脑细胞啊?

【关于查看游戏中玩家的私聊记录】
  不建议开启

回复

使用道具 举报

本版积分规则