《新飞飞》网游服务器架构设计

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

20
尽量减少对第三方库的使用和依赖 尽量做到代码自解释 尽量不使用技巧性过强的设计方法 尽量少上设计模式的当 代码是为他人而写 实践出真知,预防抗风险,分享促成长,团队强才是 真的强
21
速度:从策划案开始交付实施之日,两周之内出一个 中型玩法或中型系统 质量:“简单、可控”保证了系统稳定,防御性编程 思维保证了留有后路,30分钟内解决服务器问题(要 么修正错误,要么关闭局部系统),不停机更新 团队:人人都可以双端开发,独当一面;技术全面; 技能素质和心理素质全面
5
设计原则:简单,可控,稳定,高性能 一些具体的设计目标(略举一二): 大二的学生都可以读得懂、能写、能控 因事没来上班时,有人能动你的代码 不怕有问题,随时可追查 设计框架:一组服务器仅含两个进程,DB负责数据缓 存、账号认证、计费通信等第三方接口接入;GAME 负责游戏逻辑、玩法、游戏内容构建
24
2
认证及第三方服务器
MySql DB Server
Game Server
服务器列表信息 玩家
3
韩版架构:一组七类进程,玩家三线连接 韩版优劣:架构复杂,难以查证、跟踪与调试,难以 上手、维护与培训,不稳定,性能差,逻辑易混乱, 最高仅1500人;优点是同内容下玩家数量可扩充单服 国服架构:一组两类进程,玩家单线连接 国服优劣:最高2900人,单线管理不易扩充单服
6
7
数据缓存策略:账号列表管理,同账号下最多三角色 数据缓存(读取规则,缓存上限,调度策略) 全局性数据存取策略:开机即读取,定时保存,全局 快照 第三方接口通信策略:基于防御性的接口互访规则 (日志审计,逻辑防御),基于验证重发的通信规则
8
严重问题:DOWN机(内存,数据库访问,登录堵 塞),数据错乱,数据不保存 解决方法: 尽可能简单的表结构 尽可能简单的SQL语句 定长的数组 可控的压力阀值(由GAME控制) 总目标:不要让单玩家掌控你的机器资源
9
DB Server << >>
<<子系统>>
<<子系统>>
<<
>> << >> BUFF
<<
>>
<<
>> << >> AI
<<
>>
<<
>>
<<子系统>> << >>
10
帧轮询机制:对象管理体系;网络、逻辑、AOI分线 程;主逻辑一秒三帧,网络发送一秒六帧 消息队列机制:网络消息,AI消息,位置同步消息, 数据存取消息,定时器消息,脚本调用消息 引擎与脚本:开发速度、稳定性、热更新
13
基本模型:EPOLL 数据的memcpy:一次性接收,无memcpy;发数据时 有一次memcpy。数据缓存事先建立。 数据收发:统一的收取消息队列,处理函数;单个玩 家独立的发送队列,按帧发送,小包拼接。最多:位 置,对象加载,状态。 性能:2900人在线,80M带宽
14
基本模式:状态+消息,主循环轮询 状态:空闲,狂燥,逃跑,返回 消息:初始化,处理,伤害,到达,结束 状态与消息的关系:由消息实现状态间跳转,改变AI 策略,由状态的自轮询实现怪物智能的自我触发
16
基本模式:行走、战斗等玩家主要行为,皆通过状态 机机制实现,“状态+消息”的基本触发方式 状态:坐下,近攻,远攻,站立,移动等 消息:设定状态,删除状态,开始,终止等 关系:维护一定时间,且与其他状态有互斥等交源自文库行 为的可以设定为一个状态
17
基本内容:场景静、动态逻辑加载,区域自触发逻辑, 对象可见、范围相关的逻辑(伤害范围,可见范围等) 基本方式:称之为LinkMap的数据结构,按“层+二维 数组”的模式组织场景里的静、动态可管理资源。层 与层之间可设定可见性、可计算性;二维数组内的各 对象之间可以设定可见性
11
逻辑的驱动来源:网络消息,AI消息,定时器消息三 大驱动方式 逻辑的驱动方式:在主循环帧中分别处理来自于各消 息队列的消息(便于统一管理、性能监控) 具体的内容组织:玩家,NPC、怪、宠物,家族、师 徒、恋人,物品、装备,任务、活动等
12
对象的层级:简单动态对象(无逻辑的活物、空艇 等),复杂动态对象(NPC,怪物,玩家),对象集 合(师徒,恋人,组队,家族,王国) 个体对象设计:定义属性,方法,常用接口,接口保 护,设定数据刷新、存取规则 集合对象设计:定义管理方式,数据结构,数据同步 方法,异常处理原则
18
脚本化,热更新,多日志 单一系统的在线开关控制 单一系统的资源统计 版本的快速迭代、验证(30分钟解决问题) 单个技术人的全面素质培养,独当一面,灵活应对 预估风险,作好准备方案(既要考虑坏,也要考虑好) 基于互不信任的架构和逻辑思路
19
DB:数据回档,不保存,当机,认证无返回 物品系统:index不对应,命名不统一,沟通不充分 交易系统:日志不充分,追查难,多数据存放点 状态机系统:控制太精确,双方无主从关系,状态不 同步
4
何谓架构(作为动词) ?“架构”就是程序人员对
需求的设计,对各个产品、各种功能、各部分模 块及流程多种需求的设计
有哪些架构(作为名词) ?网络,逻辑,数据流,功 能(策划案),配置表(数据结构) 架构从哪里来?从需求中来。哪些需求?玩法的、安 全的、性能的、运营的,甚至是团队成长的 如何成长为架构师?学习,参考,实践,验证,改进
大宝(sodme) 2010.12.20
认证及第三方服务器
Sql Server World Server1 Account Server DB Server Core Server World Server2
Certify Server
Login Server
Cache Server
服务器列表信息 玩家
15
基本模式:以时间尺作为排队方式,只执行当前时间 刻度的逻辑(借鉴linux源代码) 主要功能:提供自维护逻辑的运行(技能、BUFF、安 全监控、统计等) 基本实现:引擎层实现架构,向脚本层提供定时器访 问接口,脚本层通过接口访问 相关功能:添加定时器(一次性、轮询、按条件控 制),回调函数,定时器销毁
22
设计本天成,妙手偶得之
23
Google talk & mail: sodme.dev@gmail.com 新浪微博: http://t.sina.com.cn/sodme 产品博客: http://sodme.dev.blog.163.com 技术博客: http://blog.csdn.net/sodme 公司popo: xietingbao@corp.netease.com QQ: 11700466
相关文档
最新文档