论文部分内容阅读
随着科技与计算机技术的发展,手机这个智能终端的功能越来越强大,不仅是一个通讯工具,更重要的是包含数以万计APP服务,人们通过手机可以完成很多日常生活的需求。其中手机游戏是一块很重要的领域,并且手机游戏的种类越来越多,现已成为全民娱乐的一部分。手机游戏中的竞技场更是吸引玩家的主要模块,本文主要研究的是在服务器端,如何开发一款手机游戏的竞技场系统,以下为本人主要完成的工作:1根据游戏策划小组提出的功能需求,并且参照以往RPG游戏竞技场的模式,确定了竞技场系统的五大功能模块:Rank系统,挑战者选取,竞技场的奖励,玩家的挑战记录,Top3系统,画用例图撰写用例报告,完成系统的需求分析。2本文竞技场系统的整体架构为B/S的三层结构,表示层主要为Unity3D手机引擎开发的客户端,不属于本人的工作,本人主要完成的是数据层与业务逻辑层的开发。3数据层主要为数据库的管理系统,该系统采用的是Nosql数据库,具体为MongoDB与Redis内存数据库。MongoDB为主要数据库,记录玩家的竞技场的数据,如:uid,排名,VIP等级等结构化数据,还有一些Json格式的非结构化数据如玩家选取的挑战者的信息包含其等级,坐骑,装备等。Redis作为内存数据库,用来缓存每个玩家的排名信息,采用有序集合Zset数据结构来保存,采用ZADD,ZRANK,ZRANGE这些Redis命令来简化排行榜更新,排序等操作。4业务逻辑层主要为在API Server上编写竞技场系统的服务器端的代码,采用的开发语言为Nodejs,整个程序的架构为Nodejs的Express框架,通过定义路由表来响应不同的客户端的请求,服务器处理完的结果用Json格式的文件保存起来,传给前端。通过Push Server可以将更新的内容发给客户端,无需客户端的请求。因为Push Server与客户端的通信协议为Websocket协议。5测试方面,主要完成在本地服务器上的测试,将Unity3D手机引擎开发的客户端作为前端,通过编写一些Debug接口来完成竞技场系统的后台功能测试。本文的软件开发平台为Webstorm,将竞技场系统的排行榜信息缓存在Redis数据库中,是因为Redis的有序集合Zset对元素的操作包括排序,添加,查找等命令的时间复杂度都为(46)log(7)(8)(7)n(8),这样对于人数较多的服务器来说,得到Top3,和更新排行榜的信息时间非常短,并且有Push Server的加入,可以做到实时响应的手机游戏。该系统已经通过测试,正式在游戏中上线,这样玩家可以体验下PVP的刺激。