我们的目的是尽量把每个部分做的简洁清晰,功能单一。游戏逻辑服务器可能是有最复杂的处理流程,所以我们务必减少它处理的事务。比如 聊天等。

那么还有什么可以剥离的事务呢?其实对于作弊检测,监视数据交互等都属于这一类。比如,如果我需要得到所有 player 所在的坐标的地图,直接向逻辑服务器索取,对这台服务器的负担就比较大。

现在想到的方案是,由连接服务器把需要传递给逻辑服务器的数据 clone 一份,发到另一台广播服务器上(暂定名)。这台广播服务器只负责接收数据,而不会有任何数据反馈。这样,不会给连接服务器带来过大的负担。

广播服务器可以选择把数据筛选再广播到更多的服务器上,让每个服务器处理更细致的任务。例如 player 的坐标,可以通过筛选出所有移动相关的数据包得到。并且可以根据这个有限的检测出速度作弊。GM 也可以连接到这里,获取整个游戏世界中 player 的位置分布图而不需要担心这个操作增加逻辑服务器的负担。

广播服务器应该是可以随时连入随时断开的。如果支持这个特性,那么它还是需要跟逻辑服务器通讯。我们的逻辑服务器跟连接服务器是用脉冲(或者心跳)保持通讯的节奏的。所以,广播服务器在接入连接服务器时,连接服务器只用通知它脉冲号是多少。然后广播服务器再向逻辑服务器索取初始状态,就可以随时和逻辑服务器同步了。

例如,广播服务器在第 100 个脉冲接入连接服务器,那么它就具有了第100个脉冲之后的所有 client 发过来的数据包。之后它跟逻辑服务器建立联系,假设逻辑服务器在 110 个脉冲的时候通知广播服务器所有状态数据(逻辑服务器可以 fork 一个子进程慢慢发这些数据)。下面的工作,广播服务器可能在 120 个脉冲接收完所有这些状态数据。它可以丢弃掉 100~110 之间的数据包,并把 110~120 之间的数据包作用于 110 那个时候的状态数据上,得以跟逻辑服务器同步。

有了这台广播服务器后,我们可以多出很多运用,这里就不一一展开讨论了。

监管码服务器维修,云风的 BLOG相关推荐

  1. 老人言 摘自云风的blog

    老人言 摘自云风的blog <The Elements of Programming Style >是一本很古老的书.尽管 Fortran 我们不太使用,尽管新奇的语言层出不穷,但这些,3 ...

  2. 梦幻优化服务器,云风的 BLOG

    Comments 呵呵,现在都不玩这些了哦,改行了... 感觉跟古老的telnet bbs有异曲同工之妙啊,都是直接读写文件的 如果只是把内存的数据存下来,为什么不用mmap呢?这样kernel会自动 ...

  3. gc方法写法_云风的 BLOG

    December 17, 2020 内存的惰性初始化 这两天和同事讨论一个问题,我写了个小玩意. 事情起因是,我们公司上海的工作室的一个 MMO 项目做服务器压力测试.谈及优化,涉及到服务器中使用的 ...

  4. java凸多边形寻路_云风的 BLOG

    Comments " 自动生成 waypoint 也不是难事",能说下这个用是什么算法吗?然后能不能解决室内自动布点 Posted by: 886 | (17) August 19 ...

  5. linux踩内存内存越界,云风的 BLOG

    Comments sprintf_s Posted by: Anonymous | (38) December 29, 2014 01:14 PM 我都是用snprintf Posted by: cc ...

  6. 云顶之弈服务器维修,云顶之奕云服务器

    云顶之奕云服务器 内容精选 换一换 云服务器组是对云服务器的一种逻辑划分,云服务器组中的弹性云服务器遵从同一策略.当前仅支持反亲和性,即同一云服务器组中的弹性云服务器分散地创建在不同的主机上,提高业务 ...

  7. android 输入法 智能abc 风格,云风的 BLOG

    很多人喜欢"自然码",就是因为它是一种简单的音形码,音形码相比形码学习的记忆量要小了很多.却比纯音码更能准确定位单字.不过对大多数普通用户而言,"自然码"的学习 ...

  8. java符合规律的随机数_云风的 BLOG

    鉴于我所接触过的多数游戏策划大多没有很高的数学素养(这里用于对比的参照物--我自己,在数学方面的修养已经够差了),下面不列公式,只列常识.如果涉及一些数学上的结论,也回避证明过程. 以扔硬币为例来看概 ...

  9. html引入动态资源,云风的 BLOG

    Comments 我们的主线程只需要按阻塞模式去读取文件就够了. 这句话解决了我,关于如何用多线程加载大量资源的问题.感谢~ Posted by: Beatless | (10) September ...

最新文章

  1. SAP MM 公司间STO的交货单里的移动类型的确定
  2. 2017报计算机热不热,2017年五月份热吗?2017年五月天气热不热?
  3. 成功跳槽百度工资从15K涨到28K,跳槽薪资翻倍
  4. AllenAI | 用GPT-3帮助增建数据,NLI任务直接提升十个点!?
  5. 一加7海外提前上架 骁龙855+12GB超大内存
  6. C++ 沉思录——Chap4:设计类的核查表
  7. mysql 索引建立标准_mysql索引规范
  8. transform2D转换
  9. centos6.5编译安装mysql_Centos6.5编译安装mysql 5.7.14详细教程
  10. web.xml/servlet过滤器之压缩UrlRewriteFilter
  11. 不定期总结程序员常见误区
  12. 【网络安全】单选/多选/判断/填空题
  13. qqxml图片代码_动态图的QQXML代码示例——篮球规范动作示范!
  14. 【教男朋友用python做计量】03.利用python进行假设检验(1)
  15. C语言数组制作拼图游戏,C语言例子自制拼图游戏
  16. 关于Win10家庭版安装VirtualBox时的一些问题(e.g.报错2203)
  17. CSS 去掉点li 的点
  18. 让System.Drawing.Bitmap可以在linux运行
  19. 流量监控-ntopng
  20. Redis 6.0删除节点

热门文章

  1. ubuntu good 便签
  2. AutoPostBack与AutoComplete介绍
  3. java后端需要注意的事项_【后端开发】Java中关于null的含义以及使用中要注意的事项...
  4. php数组堂each怎么保存变量,php – 数组和foreach循环可以更有效地处理输入变量...
  5. java 线程访问控件_多线程下访问控件的方式
  6. miui12怎么自定义开机动画_MIUI12相机特色功能须知,新增魔法分身与相机上滑启动更多模式...
  7. MySQL要不要用函数_2.mysql函数的使用
  8. css悬浮在某个span后面,在contenteditable div中的span元素后面设置光标
  9. c语言学生成绩管理系统课设作业,C语言课程设计——学生成绩管理系统
  10. ic卡消费管理系统_详述食堂消费系统的功能特点