本人对做了四年的游戏服务端,对市面上面的一部分游戏框架有一定了解。今天就以用得最久的那套框架:烈火战神为例。

烈火战神那套游戏框架一开始上线的时候可以同时承载在线2000人,同屏承载300。时至今日,从那套框架衍生出来的二次开发产品能承载个800人就不错了,由于客户端很多没优化得好,同屏100人就很卡了。

三个原因局限:

1:对于那套框架最大的一个局限就是用的单进程单线程服务器,也就是说引擎启动随机分配到一个CPU上面。只有一个CPU在处理问题,其它的CPU只能干看着。好了,中央处理器能力就这么大,你的代码写得越低效,承载的人数就越低。对于太耗性能的东西我总结出来几个点。

2:第一,AOI大头,估计占比40%以上,主要表现在人物的移动,玩家的出现与消失,属性的变更方面,说到底就是有变化就会对你身边的实体进行广播(可以想象一下,同屏PK的场景,那数据量够大吧)。其次的话就是除了人物以外的实体AI,就拿怪物的AI来说,在线程遍历的时候,无时无刻不在检测周边出现的实体。

3:再有的话就是衍生出出来的代码臃肿问题了,公司是要赚钱的,哪那么多时间让你去去除臃肿,性能优化(其实,很多公司知道,一旦上线,哪有这么多人玩啊!一般小平台几十个人,根本不会卡。你跟老板要时间来优化,你会被打的).

解决方案:

1:你如果还想用单线程的话也可以,其实引擎启动的时候可以给它绑定多几个CPU(SetThreadAffinityMask(hThread, dwMask),这是windows API函数)。但是这种局限在Windows环境下面的,而且也不能绑定过多,一般超多三个就会出现CPU的竞争情况。还有一种的话就是多线程咯,可以按照场景来分,也可以按照系统来分(个人的喜好一般是喜欢把AOI和聊天系统分出来,其它都还好)

2:再有就是代码问题了,其实这是小创公司一个共同的弊病了。很多不好理的逻辑,一般都是根据需求来开发的。策划都想玩创新,结果导致,代码里面这里一个IF那里一个While。很伤。然而,一百多个系统,乱糟糟,建议,如果想开发好的引擎,先拿半个月来一次瘦身最好

附加:服务器在查找方面需要注意好,简单直接才是最好的方式,看到很多游戏服务器动不动就用到了MAP结构,模板啥的,显得很高大上,其实并不然。比如做nActorID查找的时候,人数一多就是挺耗费性能的,不是哪种查询能够解决掉的问题。这种的话就必须要做直接索引了,我看过两种直接索引方式,第一种的话是直接把内存指针做成玩家的nActorId,强转就能得到玩家的Object。第二种方式的话就是拆分8字节,直接索引得到玩家的Object。

浅谈网游服务器的承载相关推荐

  1. 一些关于网游服务器的东东

    拼包函数及网络封包的异常处理(含代码) 本文作者:sodme 本文出处:http://blog.csdn.net/sodme 声明:本文可以不经作者同意任意转载.复制.传播,但任何对本文的引用都请保留 ...

  2. 无缝世界网游服务器架构的设计思路

    过去一年中,花了很多时间在考虑服务器架构设计方面的问题.看了大量文章.也研究了不少开源项目,眼界倒是开阔了不少,不过回过头来看,对网游架构设计方面的帮助却是不多.老外还是玩儿console game的 ...

  3. 网游服务器通信架构设计

    随着网游从业者的规模和需求不断扩大,越来越多的朋友进入了网游开发这个领域,使得市场中网游开发技术相关的需求量迅猛增长.目前,网游行业比较紧缺的是具有较深技术功底的"专家型"开发者, ...

  4. 组装网游服务器,网游服务器的搭建

    网游服务器的搭建 谈完网游服务器的选购之后,我们就开始考虑网游服务器的具体搭建问题了. 网游服务器在网络中并不单指网游服务器本身,而是包括登陆服务器.网关服务器.游戏服务器和数据库服务器.有的服务器可 ...

  5. 网游服务器通信架构的设计

    转自:http://www.cppblog.com/jack-wang/archive/2009/01/02/70963.aspx 随着网游从业者的规模和需求不断扩大,越来越多的朋友进入了网游开发这个 ...

  6. 【无缝世界】无缝世界网游服务器架构的设计思路

    过去一年中,花了很多时间在考虑服务器架构设计方面的问题.看了大量文章.也研究了不少开源项目,眼界倒是开阔了不少,不过回过头来看,对网游架构设计方面的帮助却是不多.老外还是玩儿console game的 ...

  7. 【转】无缝世界网游服务器架构的设计思路

    原文:http://jinghuainfo.iteye.com/blog/1192805 过去一年中,花了很多时间在考虑服务器架构设计方面的问题.看了大量文章.也研究了不少开源项目,眼界倒是开阔了不少 ...

  8. 开源大型网游服务器架构项目

    开源大型网游服务器架构项目 Trinity,国人习惯称T端,是在M端(MaNGOS)的基础上,发展出来的大型网游服务器架设软件.此项目为开源方式,任何人都可以在Trinity官方网站免费下载其源码,进 ...

  9. 宝德网吧服务器型号,14款网吧、网游 服务器横向评测

    随着近年来网吧连锁经营与网络游戏产业的蓬勃发展,网吧专用服务器和网络游戏服务器的需求量也随之迅速增长.为此,<中国计算机报>联合赛迪评测共同组织了本次网吧.网游服务器横向评测,希望为用户采 ...

  10. 网游服务器中的GUID(唯一标识码)实现-基于snowflake算法

    本文中的算法采用twitter的snowflake算法,具体请搜索介绍,原来是用Scala写的,因我项目需要,改写成C++语言,主要用于高效的生成唯一的ID, 核心算法就是毫秒级时间(41位)+机器I ...

最新文章

  1. UI Bootstrap
  2. java 内部类怎么new_[转]【Java】内部类(Inner Class)如何创建(new)
  3. Vue+Openlayers实现绘制线段并测量距离显示
  4. xp电脑怎么进入bios
  5. Python Django 之 Views HttpRequest HttpReponse
  6. php秒杀框架,yii框架redis结合php实现秒杀效果(实例代码)
  7. keras提取模型中的某一层_Keras做图片分类(四):迁移学习--猫狗大战实战
  8. 集成学习:Boosting与Bagging
  9. eBay SOA开源平台
  10. java面试自我介绍
  11. oracle ogg checkpoint,OGG目的端的checkpoint table被drop的修复方法
  12. Promise的resolve和reject使用
  13. 防辐射门行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  14. 如何查看宇视科技摄相机是否支持反向供电
  15. 什么是百度SEO?百度SEO优化怎么做?
  16. 创业书籍推荐,这本书最经典!
  17. [echarts]echarts的canvas画布大小与容器大小不一致的解决方案
  18. 安卓android按宽/高缩放图片到指定大小并进行裁剪得到中间部分图片
  19. “求同”不是最终目标,英特尔致力打造有“差异”的精彩
  20. 面试|C# .net 面试题

热门文章

  1. edge浏览器突然不能播放视频解决办法
  2. Kyrie Irving邀请粉丝加入Lineage Logistics的Share A Meal运动,帮助受COVID-19疫情影响的人们
  3. spark原理及其优化
  4. AcWing 292 炮兵阵地
  5. java阿法狗国际象棋_[转帖]被阿法狗和AlphaZero刷屏之后,聊聊国际象棋和中国象棋AI...
  6. phpcms 下载模型列表页直接点击下载
  7. angular 易犯错误
  8. 5G技术在广播电视中的应用方式
  9. 前端开发工程师原生html进阶指南
  10. [BZOJ3772]精神污染(dfs序+主席树)