




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大宝(sodme) 2010.12.20,网游服务器架构设计,2,韩服网络拓扑图,国服网络拓扑图,3,韩版架构:一组七类进程,玩家三线连接 韩版优劣:架构复杂,难以查证、跟踪与调试,难以上手、维护与培训,不稳定,性能差,逻辑易混乱,最高仅1500人;优点是同内容下玩家数量可扩充单服 国服架构:一组两类进程,玩家单线连接 国服优劣:最高2900人,单线管理不易扩充单服,韩版与国服对比,4,何谓架构(作为动词) ?“架构”就是程序人员对需求的设计,对各个产品、各种功能、各部分模块及流程多种需求的设计 有哪些架构(作为名词) ?网络,逻辑,数据流,功能(策划案),配置表(数据结构) 架构从哪里来?从
2、需求中来。哪些需求?玩法的、安全的、性能的、运营的,甚至是团队成长的 如何成长为架构师?学习,参考,实践,验证,改进,5,关于架构,设计原则:简单,可控,稳定,高性能 一些具体的设计目标(略举一二):大二的学生都可以读得懂、能写、能控因事没来上班时,有人能动你的代码不怕有问题,随时可追查 设计框架:一组服务器仅含两个进程,DB负责数据缓存、账号认证、计费通信等第三方接口接入;GAME负责游戏逻辑、玩法、游戏内容构建,国服版本设计方法,6,7,DB架构设计图,数据缓存策略:账号列表管理,同账号下最多三角色数据缓存(读取规则,缓存上限,调度策略) 全局性数据存取策略:开机即读取,定时保存,全局快照
3、 第三方接口通信策略:基于防御性的接口互访规则(日志审计,逻辑防御),基于验证重发的通信规则,DB架构设计,8,严重问题:DOWN机(内存,数据库访问,登录堵塞),数据错乱,数据不保存 解决方法:尽可能简单的表结构尽可能简单的SQL语句定长的数组可控的压力阀值(由GAME控制) 总目标:不要让单玩家掌控你的机器资源,DB设计经验,9,10,GAME架构设计图,帧轮询机制:对象管理体系;网络、逻辑、AOI分线程;主逻辑一秒三帧,网络发送一秒六帧 消息队列机制:网络消息,AI消息,位置同步消息,数据存取消息,定时器消息,脚本调用消息 引擎与脚本:开发速度、稳定性、热更新,GAME架构设计,11,逻
4、辑的驱动来源:网络消息,AI消息,定时器消息三大驱动方式 逻辑的驱动方式:在主循环帧中分别处理来自于各消息队列的消息(便于统一管理、性能监控) 具体的内容组织:玩家,NPC、怪、宠物,家族、师徒、恋人,物品、装备,任务、活动等,GAME主逻辑架构,12,对象的层级:简单动态对象(无逻辑的活物、空艇等),复杂动态对象(NPC,怪物,玩家),对象集合(师徒,恋人,组队,家族,王国) 个体对象设计:定义属性,方法,常用接口,接口保护,设定数据刷新、存取规则 集合对象设计:定义管理方式,数据结构,数据同步方法,异常处理原则,GAME对象管理体系,13,基本模型:EPOLL 数据的memcpy:一次性接
5、收,无memcpy;发数据时有一次memcpy。数据缓存事先建立。 数据收发:统一的收取消息队列,处理函数;单个玩家独立的发送队列,按帧发送,小包拼接。最多:位置,对象加载,状态。 性能:2900人在线,80M带宽,GAME网络架构,14,基本模式:状态+消息,主循环轮询 状态:空闲,狂燥,逃跑,返回 消息:初始化,处理,伤害,到达,结束 状态与消息的关系:由消息实现状态间跳转,改变AI策略,由状态的自轮询实现怪物智能的自我触发,GAME AI架构,15,基本模式:以时间尺作为排队方式,只执行当前时间刻度的逻辑(借鉴linux源代码) 主要功能:提供自维护逻辑的运行(技能、BUFF、安全监控、
6、统计等) 基本实现:引擎层实现架构,向脚本层提供定时器访问接口,脚本层通过接口访问 相关功能:添加定时器(一次性、轮询、按条件控制),回调函数,定时器销毁,GAME定时器架构,16,基本模式:行走、战斗等玩家主要行为,皆通过状态机机制实现,“状态+消息”的基本触发方式 状态:坐下,近攻,远攻,站立,移动等 消息:设定状态,删除状态,开始,终止等 关系:维护一定时间,且与其他状态有互斥等交互行为的可以设定为一个状态,GAME状态机架构,17,基本内容:场景静、动态逻辑加载,区域自触发逻辑,对象可见、范围相关的逻辑(伤害范围,可见范围等) 基本方式:称之为LinkMap的数据结构,按“层+二维数组
7、”的模式组织场景里的静、动态可管理资源。层与层之间可设定可见性、可计算性;二维数组内的各对象之间可以设定可见性,GAME场景管理架构,18,脚本化,热更新,多日志 单一系统的在线开关控制 单一系统的资源统计 版本的快速迭代、验证(30分钟解决问题) 单个技术人的全面素质培养,独当一面,灵活应对 预估风险,作好准备方案(既要考虑坏,也要考虑好) 基于互不信任的架构和逻辑思路,19,面向运营的架构要素,DB:数据回档,不保存,当机,认证无返回 物品系统:index不对应,命名不统一,沟通不充分 交易系统:日志不充分,追查难,多数据存放点 状态机系统:控制太精确,双方无主从关系,状态不同步,我们曾犯的经典错误及改进,20,尽量减少对第三方库的使用和依赖 尽量做到代码自解释 尽量不使用技巧性过强的设计方法 尽量少上设计模式的当 代码是为他人而写 实践出真知,预防抗风险,分享促成长,团队强才是真的强,21,我们的一些体会,速度:从策划案开始交付实施之日,两周之内出一个中型玩法或中型系统 质量:“简单、可控”保证了系统稳定,防御性编程思维保证了留有后路,30分钟内解决服务器问题(要么修正错误,要么关闭局部系统),不停机更新 团队:人人都可以双端开发,独当一面
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公路机械租赁合同样本
- 业主消防合同样本
- sbs防水合同样本
- 公司合作战略合同样本
- 公司培训就业合同样本
- 2025酒店管理委托合同范本全新版
- 关于苗木购销合同标准文本
- 住建委个人租房合同样本
- 入伙人协议合同样本
- 企业转让 业务合同样本
- 2024年红十字应急救护知识竞赛考试题库500题(含答案)
- TD/T 1061-2021 自然资源价格评估通则(正式版)
- 2024年江苏省泰州市姜堰区中考二模化学试题(无答案)
- 2024年四川省成都市高新区中考数学二诊试卷
- 2024年社区工作者考试必考1000题附完整答案【典优】
- WMT8-2022二手乘用车出口质量要求
- 30题质量检验员岗位常见面试问题含HR问题考察点及参考回答
- 痛经(中医妇科学)
- 智能灯具故障排除方案
- 汽车租赁服务投标方案
- 20道瑞幸咖啡营运经理岗位常见面试问题含HR常问问题考察点及参考回答
评论
0/150
提交评论