TCG游戏中服务端的设计与实现毕业设计_第1页
TCG游戏中服务端的设计与实现毕业设计_第2页
TCG游戏中服务端的设计与实现毕业设计_第3页
TCG游戏中服务端的设计与实现毕业设计_第4页
TCG游戏中服务端的设计与实现毕业设计_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

I摘 要随着互联网技术,尤其是移动互联网技术的发展,TCG集换式卡牌游戏在网络游戏中占据越来越重要的地位,从早期的万智牌、游戏王到如今火热的炉石传说:魔兽英雄传,越来越多的游戏开发商都在努力打造自己的集换式卡牌游戏。集换式卡牌游戏以其上手容易,占用时间碎片化的特性以及丰富的趣味性和对抗性,成功拥有了大批忠实玩家,也成为了游戏厂商盈利的重要手段。伴随着市场激烈竞争的是游戏研发技术的不断革新,游戏服务端从最初的简单http服务器,到初成架构的MudOS服务器,再到为 MMORPG应运而生的“通信,逻辑,存储” 的模块化服务端,以及时下热门的基于动态负载均衡的分级服务端,游戏服务端研发技术也趋于成熟。本文从笔者毕业设计中研发的集换式卡牌游戏星际传说服务端出发,通过游戏服务端的通信协议、C/S架构、设计模式和数据库技术等方面浅谈当下TCG游戏服务端的设计与实现。 关键词:集换式卡牌游戏;服务端设计;设计模式;C/S 架构IIAbstractWith the development of the Internet technology, especially the mobile Internet technology, TCGs(Trading Card Game) are taking a more important position in online games. From Magic The Gathering in the 1990s, the Yu-Gi-Oh Card Game in the early twenty-first century to the Hearth Stone: Heroes of Warcraft in recent years, more and more game companies are developing their own TCGs. For its features of easy to get started, not time consuming, abundant interest and antagonism, TCGs have earned plenty of loyal fans, and also become an important tool for game companies to make benefits.Breakthroughs of game developing techniques come with the fierce competition, from the simple http server, preliminarily structured MudOS server, communication, problem domain, data storage modular server, which is built to meet the need of MMORPG, to the popular hierarchical game server based on dynamic load balancing, the techniques of game server developing have become mature recently.In this paper, I will introduce the design and realization of TCG server through communication protocol, C/S structure, design pattern and database techniques by the game I developed during my graduation project.Key words:TCG; server design; designing pattern; C/S structureII目 录摘 要 .IAbstract .II1 绪论 .11.1 研究背景,目的及意义 .11.2 国内外研究现状 .11.3 研究内容和论文结构 .32 相关技术概述 .42.1 Cocos2d-x 游戏引擎简介 .42.2 C/S 架构简介 .42.3 Socket 通信技术简介 .42.4 服务端设计模式概述 .52.5 IntelliJ IDEA 简介 .62.6 MySQL 数据库引擎简介 .72.7 本章小结 .73 集换式卡牌游戏服务端需求分析 .83.1 系统用户用例分析 .83.2 系统功能性需求分析 .93.3 系统非功能性需求分析 .143.4 本章小结 .164 集换式卡牌游戏服务端设计 .174.1 系统总体设计 .174.1.1 系统上下文定义 .174.1.2 系统软件结构设计 .174.2 系统主要功能模块的设计 .184.2.1 网络通信模块 .184.2.2 登录注册模块 .194.2.3 玩家对战模块 .204.2.4 商城模块 .214.2.5 卡牌收藏模块 .22III4.2.6 好友模块 .244.3 数据库设计 .264.3.1 数据库概念设计 .264.3.2 数据库详细设计 .264.4 系统安全性设计 .304.4.1 网络安全设计 .314.4.2 数据库安全设计 .314.5 本章小结 .315 系统实现 .325.1 系统开发环境 .325.2 系统各功能模块的实现 .325.2.1 网络通信模块实现 .325.2.2 玩家对战模块实现 .335.2.3 数据库访问模块实现 .345.2.4 商城模块实现 .345.2.5 好友模块实现 .355.3 本章小结 .366 系统测试 .376.1 功能测试用例 .376.2 性能测试用例 .386.3 测试结果 .386.4 本章小结 .387 总结与展望 .397.1 全文总结 .397.2 展望 .39致 谢 .41参考文献 .421 绪论1.1 研究背景,目的及意义TCG 是英文Trading Card Game的首字母缩写,中文学名是集换式卡牌游戏。1 顾名思义, TCG 需要游戏者购买卡牌扩充包来拓展自己的牌库,然后根据一定的策略,灵活组合各类型的卡牌来构筑一副符合游戏规则的套牌,玩家之间使用自行构筑的套牌进行游戏。 2因为每个玩家构筑卡组的思路和策略不同,加上每局游戏中玩家抽到卡牌的顺序也不同,可以给游戏对局带来数不胜数的变数 3,这也是 TCG 吸引玩家的最大玩点。笔者在 2017 年 1 月至 2017 年 5 月参与了集换式卡牌游戏星际传说的研发工作,在项目组中负责游戏服务端的设计与实现,游戏出色地体现了 TCG 多变的策略和丰富的可玩性,而笔者也积累了一定服务端研发的实践经验。为本文的撰写打下了基础。本文研究的目的在于通过对当下 TCG 服务端研发的技术的分析和实践,总结出集换式卡牌游戏服务端设计与实现中实用的项目结构和研发技术,为今后TCG 的研发者提供可以借鉴的经验。1.2 国内外研究现状美国数学教授查理加菲于 1993 年 8 月设计了世界上第一款集换式卡牌游戏万智牌(Magic The Gathering),游戏以西方神话故事为背景,玩家在游戏中收集武器,魔法和生物等不同类型的卡牌来构筑自己的套牌, 4以模拟远古时期魔法师之间的对决。游戏一经推出便俘获了大量玩家,时至今日,万智牌在全球已拥有约 600 万名玩家。而日本也在 1999 年推出了游戏王卡牌游戏 ,这款由漫画衍生出作品在集换式卡牌游戏中拥有里程碑式的意义 5,游戏首次将东西方文化元素巧妙地进行了融合,在卡牌的种类上相对于之前的集换式卡牌游戏也有极大的丰富,并且首创了卡牌盖伏和正面表示的状态,以及怪物卡在不同的阶段拥有的反转、启动、永续、诱发、即时诱发和规则改变效果都极大丰富了游戏的策略和可玩性,因此, 游戏王卡牌游戏也是吉尼斯世界纪录认证的全球最高销量的集换式卡牌游戏 6。美国游戏公司暴雪娱乐于 2014 年 3 月发行的炉石传说:魔5兽英雄传则开创了集换式卡牌游戏的新时代。游戏将自家热门 IP魔兽世界作为游戏背景,简化了游戏复杂度和游戏进程,使得集换式卡牌游戏更加平民化,更加容易上手。同时, 炉石传说:魔兽英雄传也推出了每日任务,让玩家可以通过完成任务来获取更多卡牌,不断推出的游戏新环境和新机制也使得游戏保持着经久不衰的活力 7。在我国,由于游戏研发技术和互联网技术起步较晚,集换式卡牌游戏的出现也比国外迟。在国产集换式卡牌游戏中,最具有代表性的作品就是 2009 年面市的三国智 8了,游戏结合了集换式游戏元素和国内玩家热衷的三国题材,以卡牌对战的形式展示了三国时期尔虞我诈,群雄逐鹿的风云故事。在集换式卡牌游戏发展历程中,游戏的研发,特别是服务端的研发技术也经历了多次的更新换代 9。最初的网络游戏借助 HTTP 协议来完成客户端和服务端之间的简单通信,数据格式,数据量和传输速度都有很大的限制,这一阶段的游戏服务端通常是一个静态的服务器,只能按照规定好的规则返回简单数据,通常采用的编程语言是 C 语言,C+或者 Pascal10。在后续的发展中,人们为了简化服务端程序编译、调试和维护的过程,开始尝试使用脚本语言研发服务端,1987年 Perl 语言和 1994 年 PHP 语言的问世,使得服务端的研发技术正式进入脚本化的时代 11。随着服务端需求的不断提升和研发技术的完善,多种适用于服务端研发的语言不断出现,同时也逐渐形成了 Web 应用的行业标准,即 Java 阵营的J2EE 和 Windows 阵营的 .Net 为开发者提供了解决不同需求的服务端的技术标准和通用解决方案,此时,服务端引擎的概念也逐渐产生,游戏服务端也从弱交互型服务器不断向强交互型服务器转变 12。到了 2000 年前后,网络游戏进入全面图形化时代,用户的数据量也日益增多,频繁的小文件读写和传输给服务器带来了巨大挑战,这时人们开始将服务端拆分为逻辑服务端和数据库服务端两部分,逻辑服务端专门处理用户的各类请求,而数据库服务端专注于数据持久化工作,一些成功的商用数据库引擎例如 Oracle 和 MySQL 开始被广泛应用于服务端的开发中 13。此时的网络游戏,由于游戏需要经常更新新的内容来留住玩家,服务端也需要不断换代升级来满足客户端与玩家交互的需求,因此人们开始使用更加利于拓展和维护的编程语言,如 Python 和 Lua 语言,更加亲近自然语言的面向对象语言使得开发工作更高效 14。服务端引擎也开始运用到开发中,因为 Python 这样的脚本语言可以很方便的调用编译好的 C 语言程序来执行逻辑操作,因此服务6端引擎通常由底层的引擎核心、脚本解释器和外层的若干脚本组成,引擎的内核通常由纯 C 语言或者 C+编写,它不负责任何具体的逻辑需求的处理,只把服务端的需求分类、抽象为若干个基本借口,每个接口通常只负责一项简单的任务,并对外层的脚本提供接口 15,而外层的脚本则运行在一个高效率的解释器上,负责有序地组织和调用底层内核提供的开发接口,而解释器则是把 Python 或其他脚本中的函数调用指向对应的底层引擎借口,并返回执行结果给脚本层,如此一来服务端的开发进入了全面模块化和分层化的阶段 16,它所带来的好处是显而易见的,首先,引擎内核与任何具体的业务逻辑无关,内核开发人员只需要专注于优化底层 API 的效率和稳定性,负责业务逻辑开发的人员不需要了解任何引擎实现的原理,只需要按需调用内核 接 口 来 完 成 业 务 逻 辑 的 需 求 , 细 化 了 开 发 人 员 的 工作 范 围 和 简 化 了 开 发 流 程 17。 其 次 , 由 于 脚 本 维 护 和 拓 展 的 便 利 性 , 游 戏 需 求 更改 时 , 往 往 不 需 要 重 启 服 务 器 , 只 是 将 对 应 业 务 逻 辑 的 脚 本 做 相 应 修 改 , 再 重 新 发布 脚 本 即 可 , 节 省 了 服 务 器 运 营 的 成 本 , 也 方 便 开 发 人 员 快 速 、 精 确 定 位 上 线 项 目的 bug 并 作 相 应 的 修 改 18。目前,国内游戏研发采用的服务端引擎大致分为 2 类,第一类是自我定制的开源引擎,如 KBEngine 和 Photon 等。另一类则是自主研发的引擎,通常有较强研发实力的游戏公司会采取后者,而前者不失为一种节省时间和成本的好选择 19。1.3 研究内容和论文结构(1)本文内容概述:本文以笔者参与研发的集换式卡牌游戏星际传说为例,从需求分析,项目设计,项目实现和系统测试等方面详细阐述了一个集换式卡牌游戏服务端的开发过程和开发技术总结。(2)本文的内容组织与结构安排如下:第一章,介绍本文的课题研究背景、目的和意义,以及国内外研究现状。第二章,介绍星际传说项目开发用到的开发技术,开发工具和开发环境。第三章,从系统功能性需求和非功能性需求详细分析项目需求。第四章,根据需求分析,对系统做模块划分,并详细设计每个模块的功能。7第五章,详细介绍每个模块功能的实现方式。第六章,详细介绍系统采取的测试方法,测试结果和由此得出的结论。第七章,详细描述笔者的论文总结和展望。82 相关技术概述2.1 Cocos2d-x 游戏引擎简介我参与研发的游戏星际传说使用了 Cocos2d-x 3.10 作为游戏客户端引擎。这是一个跨平台的开源游戏引擎,在 2D 图像图形渲染上有独特的优势。Cocos2d-x 的一大特性是它的跨平台性,引擎允许开发者使用 C+,node.js 和Lua 在多个平台上部署项目,并不需要对项目做太多针对平台的修改。Cocos2d-x引擎采用 OpenGL ES 进行图形渲染,能够充分利用系统硬件性能,同时Cocos2d-x 目前已集成了大量第三方库,尤其是图形和动画特效的第三方库,为开发者提供了简介易用且高效的开发模板 20。引擎的另一大优势是开源,这使得有经验的开发者可以根据自己的需求自我修改引擎的模块来提升游戏运行的效率,自我定制的 Cocos2d-x 引擎在目前国内游戏公司的开发中使用非常普遍,开源社区也提供了对引擎优化的技术支持 21。2.2 C/S 架构简介C/S 架构全称 Client/Server 架构,是将应用程序的逻辑通过合理划分,分别部署在客户端和服务端,在采用 C/S 架构的游戏中,通常将游戏和用户交互的 UI部分部署在客户端,而将业务逻辑处理和数据持久化的工作部署在服务端 22。C/S 架构有利于将客户端和服务端的硬件性能,通常客户端机器拥有出色的图形渲染性能,能够很好的完成 UI 交互的工作,而服务器通常具有较强的运算性能和并发处理的能力,能够同时快速处理多个客户端的需求。因此,采用 C/S架构的软件系统通常具有很快的响应速度和高并发能力,但 C/S 架构也有不足,客户机需要安装并维护客户端程序才能使用,因此运行平台往往受到限制,同时服务器的研发和维护需要大量成本和复杂的技术支持 23。C/S 开发架构在目前的游戏研发领域有重要的应用,许多大型客户端游戏都采用 C/S 架构进行开发。2.3 Socket 通信技术简介Socket,即程序套接字,是一种实现网络上两个不同的程序进行双向数据通9信的技术。网络上的服务器通常都提供了多种服务,每一种服务对应一个 socket通道,并绑定到一个固定的端口上,网络上其他机器通过服务器的 IP 地址和端口号来访问服务器并使用服务器提供的相应服务 24。Socket 通信起源于 Unix/Linux,它可以看成一个特殊的网络文件, Socket 中封装的接口,如 bind(),listen(),read(),write()和 close()等提供了一个完整的文件读写操作的流程。在进行通信时,通信的两个进程间通过 IP 地址和端口号建立一个socket 连接,即一个文件读写的通道,然后通信双方调用相应的读写操作的方法将输入写入通道或者从通道

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论