原文:http://wenku.baidu.com/view/baa819d4b9f3f90f76c61bac.html?from=rec&pos=3&weight=29&lastweight=28&count=5

韩服网络拓扑图:

国服网络拓扑图:

韩服与国服对比:

韩版架构:一组七类进程,玩家三线连接

韩版优劣:架构复杂,难以查证、跟踪与调试,难以上手、维护与培训,不稳定,性能差,逻辑易混乱,最高仅1500人;优点是同内容下玩家数量可扩充单服最高仅1500人;优点是同内容下玩家数量可扩充单服

国服架构:一组两类进程,玩家单线连接

国服优劣:最高2900人,单线管理不易扩充单服

何为架构:

何谓架构(作为动词)?“架构”就是程序人员对需求的设计,对各个产品、各种功能、各部分模块及流程多种需求的设计

有哪些架构(作为名词)?网络,逻辑,数据流,功能(策划案),配置表(数据结构)

架构从哪里来?从需求中来。哪些需求?玩法的、安全的、性能的、运营的,甚至是团队成长的

如何成长为架构师?学习,参考,实践,验证,改进

国服版本设计方法:

设计原则:简单,可控,稳定,高性能

一些具体的设计目标(略举一二):

大二的学生都可以读得懂、能写、能控

因事没来上班时,有人能动你的代码因事没来上班时,有人能动你的代码

不怕有问题,随时可追查

设计框架:一组服务器仅含两个进程,DB负责数据缓存、账号认证、计费通信等第三方接口接入;GAME负责游戏逻辑、玩法、游戏内容构建

DB架构设计图:

DB架构设计:

数据缓存策略:账号列表管理,同账号下最多三角色数据缓存(读取规则,缓存上限,调度策略)

全局性数据存取策略:开机即读取,定时保存,全局快照快照

第三方接口通信策略:基于防御性的接口互访规则(日志审计,逻辑防御),基于验证重发的通信规则

DB设计经验:

严重问题:DOWN机(内存,数据库访问,登录堵塞),数据错乱,数据不保存

解决方法:

尽可能简单的表结构

尽可能简单的SQL语句

定长的数组

可控的压力阀值(由GAME控制)

总目标:不要让单玩家掌控你的机器资源

Game架构设计图:

Game架构设计:

帧轮询机制:对象管理体系;网络、逻辑、AOI分线程;主逻辑一秒三帧,网络发送一秒六帧

消息队列机制:网络消息,AI消息,位置同步消息,数据存取消息,定时器消息,脚本调用消息数据存取消息,定时器消息,脚本调用消息

引擎与脚本:开发速度、稳定性、热更新

Game主逻辑架构:

逻辑的驱动来源:网络消息,AI消息,定时器消息三大驱动方式

逻辑的驱动方式:在主循环帧中分别处理来自于各消息队列的消息(便于统一管理、性能监控)息队列的消息(便于统一管理、性能监控)

具体的内容组织:玩家,NPC、怪、宠物,家族、师徒、恋人,物品、装备,任务、活动等

Game对象管理体系:

对象的层级:简单动态对象(无逻辑的活物、空艇等),复杂动态对象(NPC,怪物,玩家),对象集合(师徒,恋人,组队,家族,王国)

个体对象设计:定义属性,方法,常用接口,接口保护,设定数据刷新、存取规则

集合对象设计:定义管理方式,数据结构,数据同步方法,异常处理原则

Game网络架构:

基本模型:EPOLL

数据的memcpy:一次性接收,无memcpy;发数据时有一次memcpy。数据缓存事先建立。

数据收发:统一的收取消息队列,处理函数;单个玩家独立的发送队列,按帧发送,小包拼接。最多:位置,对象加载,状态。

性能:2900人在线,80M带宽

GameAI架构:

基本模式:状态+消息,主循环轮询

状态:空闲,狂燥,逃跑,返回

消息:初始化,处理,伤害,到达,结束

状态与消息的关系:由消息实现状态间跳转,改变AI策略,由状态的自轮询实现怪物智能的自我触发

Game定时器架构:

基本模式:以时间尺作为排队方式,只执行当前时间刻度的逻辑(借鉴linux源代码)

主要功能:提供自维护逻辑的运行(技能、BUFF、安全监控、统计等)全监控、统计等)

基本实现:引擎层实现架构,向脚本层提供定时器访问接口,脚本层通过接口访问

相关功能:添加定时器(一次性、轮询、按条件控制),回调函数,定时器销毁

Game状态机架构:

基本模式:行走、战斗等玩家主要行为,皆通过状态机机制实现,“状态+消息”的基本触发方式

状态:坐下,近攻,远攻,站立,移动等

消息:设定状态,删除状态,开始,终止等

关系:维护一定时间,且与其他状态有互斥等交互行为的可以设定为一个状态

Game场景管理架构:

基本内容:场景静、动态逻辑加载,区域自触发逻辑,对象可见、范围相关的逻辑(伤害范围,可见范围等)

基本方式:称之为LinkMap的数据结构,按“层+二维数组”的模式组织场景里的静、动态可管理资源。层数组”的模式组织场景里的静、动态可管理资源。层与层之间可设定可见性、可计算性;二维数组内的各对象之间可以设定可见性

面向运营的架构要素:

脚本化,热更新,多日志

单一系统的在线开关控制

单一系统的资源统计

版本的快速迭代、验证(30分钟解决问题)

单个技术人的全面素质培养,独当一面,灵活应对

预估风险,作好准备方案(既要考虑坏,也要考虑好)

基于互不信任的架构和逻辑思路

曾经犯的经典错误及改进:

DB:数据回档,不保存,当机,认证无返回

物品系统:index不对应,命名不统一,沟通不充分

交易系统:日志不充分,追查难,多数据存放点

状态机系统:控制太精确,双方无主从关系,状态不同步

一些体会:

尽量减少对第三方库的使用和依赖

尽量做到代码自解释

尽量不使用技巧性过强的设计方法

尽量少上设计模式的当

代码是为他人而写

实践出真知,预防抗风险,分享促成长,团队强才是真的强

目前的状态:

速度:从策划案开始交付实施之日,两周之内出一个中型玩法或中型系统

质量:“简单、可控”保证了系统稳定,防御性编程思维保证了留有后路,30分钟内解决服务器问题(要么修正错误,要么关闭局部系统),不停机更新

团队:人人都可以双端开发,独当一面;技术全面;技能素质和心理素质全面

设计本天成,妙手偶得之

《新飞飞》网游服务器架构设计相关推荐

  1. 【转】《新飞飞》网游服务器架构设计

     原文:http://wenku.baidu.com/view/baa819d4b9f3f90f76c61bac.html?from=rec&pos=3&weight=29&l ...

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

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

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

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

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

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

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

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

  6. 简单实用的网游服务器架构

    本文原创版权归GameRes 聚润堂所有,如有再转,请按如下方式显式表面原创作者及出处,以示尊重! 作者:聚润堂 转自:http://bbs.gameres.com/showthread.asp?th ...

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

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

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

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

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

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

最新文章

  1. python跨文件全局变量_Python 进程之间共享数据(全局变量)的方法
  2. 【深度学习】基于Pytorch的卷积神经网络概念解析和API妙用(二)
  3. 60 Minutes专访李开复:泛人工智能可能永远实现不了
  4. 登录网页后要弹出一个新标签_连永久链接都不会,还做什么新媒体?
  5. Wordpress表结构详细说明
  6. kali没有arpspoof命令_windows环境下使用python3命令
  7. 大话css预编译处理(一)通读介绍篇
  8. MYSQL基础:mysql客户端工具
  9. 用计算机绘制三维设计图步骤,3d效果图一般制作步骤
  10. PulseAudio 模块化实现录音和放音
  11. (copy即运行)嗖嗖移动大厅详讲!!!一看便知
  12. 产品经理常用的三款工具
  13. python画k线_python画k线,python绘制动态k线及均线
  14. 项目管理--项目组织
  15. pandas matplotlib 用于数据分析和可视化
  16. 统计学——几种常见的假设检验
  17. java毕业设计车牌信息管理系统Mybatis+系统+数据库+调试部署
  18. MySQL5.7.18安装卡在了starting server
  19. 智联招聘反爬虫—MmEwMD参数定位
  20. 对EditText的软键盘进行监听-----android:imeOptions

热门文章

  1. 你不知道的五险一金秘密
  2. python进行接口压力测试(1秒1000个请求)
  3. 手把手教你做小型机器狗,毕业设计。必看
  4. FatMouse‘s Trade 贪心算法
  5. 远程监控及数据采集解决方案
  6. Oracle 12C升级至Oracle 19C
  7. 宝塔给WordPress网站搬家
  8. Footprint AMA实录:手把手教你分析数据看加密市场大盘
  9. 图片放大镜效果实现过程详解
  10. 智能车间如何无人化?APS系统来帮忙