文本描述
资深架构师分享手游五大设计要点
作者:董锡军
第一节:轻网游时代已经来了“世界频现三消,上帝也爱消除”,腾讯广告做得不多,但这次做了,而且还涵盖央视。广告充满了创意,很好的契合了最新推出的微信手游----天天爱消 除。这款游戏不到三天即迅速获得了超越2000W的下载量,并在后续取得了巨大的成功!天天酷跑、全民飞机大战等后来的微信游戏在证明了自身产品优秀设计 的同时也印证了一个新的时代----轻网游已经来临。第二节:轻网游的特点轻网游以最新的微信游戏为代表,他们共同的特点是产品设计轻量化,没有传统端游的巨大安装包,可占用玩家碎片化的时间随时随地利用手机等设备来体验游 戏并随时可以中断游戏。轻网游用三个字可以概括“小、轻、精”,小是指安装包小;轻是指随时随地体验和终止;精则是指产品品质精良。第三节:轻网游设计要点轻网游在设计上有着自己的特殊性,需要架构设计师在如下几方面有全面的考虑;为便于后面详细说明,先看某游戏的架构设计如下图:
接入层:这里解决的是玩家的接入问题。玩家如何进入游戏,如何保持链接,相关资源的下载访问速度如何解决都在这里要有设计和解决方案。接入层主要问题一:帐号体系各大开放平台都有一套帐号体系,互不相同,设计师需要考虑好接入哪种帐号体系并在各个帐号体系中采用何种兼容策略;幸运的是腾讯有很强的帐号体系 ptlogin可直接接入,大大降低了用户进入的门槛。有些外部团队则没那么幸运,如果这个团队不打算接入其他现有的帐号体系而自己独立建设,那么成本高 的会大大超出你的想象,有时候这也是团队项目成败的关键因素之一。接入现有的帐号体系都比较完善了,不赘述;新建帐号体系需要额外重点考虑其安全性、稳定性和容灾。帐号体系是比较独立的系统可分解出来单独阐述,这里与网游相关性较低,不赘述。但其设计原理与本文类似,可参照执行。接入层主要问题二:负载均衡负载均衡主要的目的在于削峰填谷、就近接入、解决跨网等问题;削峰填谷:把流量智能导到负载比较低的服务器,但又不能形成访问毛刺;就近接入:把链接导向距离玩家比较近的服务器,通常这个链接质量较好跨网问题:国内网络很奇葩,跨网非常普遍的存在,有时候距离玩家更近的服务器是跨网的,这时候链接质量会变差,需要优先在同网内选择服务器。腾讯平台典型的解决方案就是GSLB、TGW、CDN,这里不赘述,可单独查阅资料了解。接入层主要问题三:保持在线网游的轻带来的问题是玩家可能处于移动当中,随时更换网络状态;频繁的登入和注销绝不是好主意,这里需要设计玩家状态保持机制,避免不必要的登录认证,以提升用户游戏体验。逻辑层:通常游戏逻辑可在一个或者多个进程Gameserver中处理,现在服务器都为多核处理器,为充分发挥处理器的计算能力,建议选择多个进程协同工作的方式。轻网游一般游戏逻辑较为简单,逻辑进程通常分无状态服务和有状态服务两种模式;无状态服务模式适合玩家交互不复杂的场景,这种场景不需要频繁的访问和修改玩家数据或者逻辑相对简单;无状态服务模式便于动态扩容和调度,可以做到玩 家完全无感知。部落守卫战就是采用无状态服务模式开发的。这种模式在处理复杂交互的时候成本很高,需要频繁访问cache和DB,对编程要求也相对较高。有状态服务模式适合玩家间有复杂交互的场景,通常一组服务中存储了大部分玩家数据,访问cache和DB回写的需求低, 编程难度低;有状态服务模式通常依赖于热备来容灾,有时对数据会有回档的需求。对。