摘 要
随着社会进步的步伐越来越快,人们的生活压力也随之越来越大,游玩由电脑的开发各种游戏也是一种用来缓解压力的不错的方法,为了将游戏缓解压力和益智的特性结合起来,本文设计并实现了一个基于C++的《元气骑士》。
本项目可基于C++和Qt库以迭代模式进行开发。本项目可以增强人的应变能力和即时判断能力,游戏的同时,可以排解压力,减少因为疫情产生的焦虑,而且不仅可以一个人玩打发时间,还可以和身边的朋友一起游玩,促进好友间的友谊关系。
在对游戏设计的可行性进行分析之后,对该项目所需要实现的功能进行了探讨,对此由本人的经验判断,可以应用算法,函数和一些几何图形的理论基础,实现了敌人角色的移动,地图的生成,玩家人物的移动和射击,界面的切换,对相关物体的碰撞检测,角色护甲的恢复以及一整套建立在原游戏基础上的战斗系统等相关功能,使该项目能够完整运行。在本次开发中,通过对功能模块的实现,玩家可以通过该项目单人或多人进行游戏,在游戏过程中可以对敌人进行射击和击败boss以获得胜利,也可能在游玩期间玩家角色生命值为0由此结束游戏,实现该游戏的基本玩法,在此过程中,不太理想的是因为技术能力的不足,无法实现与原游戏一样高度灵活的随机地图生成系统,但是没有对游戏的完整运行产生太大的影响。在开发完成后,也对该项目进行了测试,以保证实现的效果。
作为一款益智游戏,《元气骑士》的开发该游戏是一个非常有价值的课题。本游戏的成功开发,能够使人们的日常娱乐生活更加丰富多彩。
关键词:射击游戏;C++;Qt;算法;函数
Abstract
With the pace of social progress is faster and faster, people's life pressure is also getting bigger and bigger, playing the development of various games by computer is also a good way to relieve pressure, in order to combine the game to relieve pressure and puzzle characteristics, this paper designed and realized a C + + based "Vitality Knight".
This project can be developed in an iterative mode based on the C + + and Qt libraries. This project can enhance people's adaptability and real-time judgment. In the game, it can relieve pressure, reduce the anxiety caused by the epidemic, and can not only kill time alone, but also play with friends around, promoting the friendship between friends.
After the analysis of the feasibility of the game design, the function of the project is discussed, by my experience, can apply algorithm, function and some geometry theoretical basis, realize the movement of the enemy role, the generation of the map, player character movement and shooting, interface switch, collision detection of related objects, role of armor and a set of based on the original game combat system and other related functions, make the project can run completely. In this development, through the realization of the function module, players can through the project single or more people game, in the game of the enemy shooting and beat the boss to win, may also play during the player character health value ended the game, the basic implementation of the game, in the process, not ideal because of the lack of technical ability, as the original game highly flexible random map generation system, but no great impact on the complete operation of the game. After the development, the project was also tested to ensure the effect.
As a puzzle game, the development of the game is a very valuable subject. The successful development of this game can make people's daily entertainment life more colorful.
Key words: shooting game,C + +,algorithm,function
目 录
摘 要I
AbstractII
第1章 绪 论
1.1 研究的背景与意义
1.2 研究现状分析
1.3 研究方法与内容
1.4 本章小结
第2章 平台开发技术
2.1 游戏采用的开发模式
2.2 涉及技术
2.2.1 QT库
2.2.2 C++ 语言
2.3 本章小结
第3章 需求分析
3.1 系统可行性分析
3.1.1 经济可行性
3.1.2 技术可行性
3.1.3 法律可行性
3.2 项目需求分析
3.2.1 功能需求分析
3.2.2 性能需求分析
3.2.3 环境需求分析
3.2.4 质量需求分析
3.3 本章小结
第4章 平台总体设计
4.1 项目流程结构图
4.2 平台功能设计
4.2.1 地图模块
4.2.2 碰撞模块
4.2.3 生命值模块
4.2.4 角色模块
4.2.5 子弹模块
4.2.6 数据传输模块
4.3 本章小结
第5章 游戏详细设计
5.1 关于游戏的全流程
5.2 地图模块实现
5.3 碰撞模块实现
5.4 生命值模块实现
5.5 角色模块实现
5.6 子弹模块实现
5.7 数据传输模块实现
5.8 本章小结
第6章 系统测试
6.1 游戏测试的方法
6.2 功能测试测试用例
6.3 性能测试
6.4 压力测试
6.5 问题与解决方案
6.6 本章小结
结 论
参考文献
原创性声明
致 谢
附 录
第1章 绪 论
1.1 研究的背景与意义
在当今的知识经济时代,各个行业领域不同,对于计算机技术的应用范围也作出了扩展,近年来,随着生活压力的不断增大,人们对于娱乐的需求也愈发强烈,但传统的娱乐方式实在受限于各种条件,而如今的计算机技术使游戏和游戏平台大放异彩,已经可以应付复杂的计算和处理庞大的数据资源,让游戏如春笋般出现,给娱乐提供了便利[1]。为了解决人们对于娱乐的需求,开发一个游戏可以让人们的生活增添一丝趣味,不再显得枯燥无趣,同时由于游戏本身带有的正面属性,也不会让游玩的同时感觉一无所获。
通过对本游戏的成功开发,能够使人们的日常娱乐生活更加丰富多彩。我作为一个计算机学院的毕业生,希望可以在这方面展现自己的能力,让自己的一技之长有所贡献。
1.2 研究现状分析
游戏是一种广泛的文化现象,也是一种重要的娱乐产业。它潜移默化地推动着国内外科技的发展。相比于国内外的游戏研究,国内的游戏的研究主要集中在对游戏产业本身的发展历程、规模、结构、政策等方面的综合描述,探讨游戏文化的影响,游戏设计的理论的分析,对游戏用户心理的研究和对游戏教育的探索与实践。而外国游戏的研究则涵盖了更广泛的领域,除了上述几个方面外,还包括了史学、哲学、美学、伦理学,社会学和传播学等视角。外国游戏研究不仅关注游戏本身,也关注游戏与社会、文化、经济、政治等各个层面的互动与影响。外国游戏研究也更加重视跨学科和跨文化的交流与合作,倒形成了多元化和开放性的学术氛围。
中国游戏与外国游戏的研究现状反映了两者在发展水平和创新能力上的差距,也显示了两者在共同关注和互相借鉴上的可能性。未来,中国游戏研究应该继续加强对本土游戏文化和产业的深入分析,同时也要拓宽对国际游戏前沿和趋势的关注和参与,提高自身的学术水平和国际影响力。外国游戏研究则应该更加重视对中国游戏市场和用户的了解和尊重,增进对中国游戏文化和创意的认识和欣赏,促进中外游戏研究和产业的交流与合作。
而在当今的国内外的平台上,元气骑士作为一款游戏,其实不乏有利的竞争对手。最广为人知的无非是《原神》、《王者荣耀》和《皇室战争》。这些游戏虽然放眼全球来看有不少人游玩,有着很高的知名度。但是它们也各有各的特点和劣势,下面就对它们进行简单的介绍。
自从2020年开始,游玩《原神》的玩家越来越多,首先就是它的少见开放性世界的玩法,其次就是其美术和音乐赢得了许多玩家的青睐,话虽如此,由于其受益途径具有一定的赌博性质,再加上对设备的存储空间过大,对设备的要求高,使得不少人出于经济的考虑并不会把心思花在上面。
《王者荣耀》也是国内很多人谈到游戏的第一印象。在社交性上,王者荣耀在这方面做到了极致,玩法也只是普通的多人竞技类玩法,但是其单局时间长和存储空间占用大,在生活节奏越来越快的今天也在走着下坡路。
《皇室战争》是一款国外游戏。它之所以能广为人知,则是得益于它的三分钟对局,在考验玩家这方面做到了极致,对各种的兵种的运用方法也能让玩家轻松掌握,但问题出在它的社交性太小,而且对于网络的需求也大。
对于要进行开发的《元气骑士》,不仅占用的空间小,对于考验玩家的方面虽然略差于《皇室战争》,但在社交性上远比其优秀,设备要求低,内存占用远远低于《原神》,《王者荣耀》等多人游戏,再加上无明显的网络流量需求,更重要的是,它属于单机游戏,可以随时暂停,即使在知名度上远远不如上面几个游戏,但玩过该游戏的玩家反而觉得它是一种在游戏娱乐方面不错的选择,属于真正的消遣,益智,轻便于一身的游戏。
1.3 研究方法与内容
对本项目采用基于C++和Qt库以迭代器模式开发。主要应用二维数组,碰撞检测,函数和Qt socket等来完成对该游戏游戏中各种功能的实现。为保证其游戏效果,开发前也对原游戏进行了一段时间的体验以还原其效果,并在其官方渠道上下载所需的素材,在开发期间,尽可能地保证项目在能稳定运行的基础上进行下一步的开发,在此过程中难免遇到困难,则主要通过翻阅相关书籍和浏览网络论坛以尽可能解决在开发过程中遇到的难题。通过对该游戏的研究与开发,笔者实现了对游戏地图的生成,双方人物的移动机制和攻击机制,实现了子弹,人物和墙壁相互之间的碰撞及其检测,完成了对可移动实体的生命值的开发,以及一个简单的基于Qt socket的多人联机系统。开发与测试同时进行,最后成果基本符合预期,即意味着该游戏能正常地运行。
1.4 本章小结
随着当今时代的脚步,人们的生活压力的不断增大,使得人们对于娱乐的需求也愈发强烈,但传统的娱乐方式实在受限于各种条件,而市面上的一些网络游戏也因为受限于各种条件使得无法满足需求,而如今的计算机利用了各个领域的知识,已可以处理庞大的数据资源,也给娱乐提供了便利,也巩固了游戏的需求和地位,缓解人们的生活压力,促进社会的和谐发展,提高国民的幸福指数。
第2章 平台开发技术
2.1 游戏采用的开发模式
在游戏开发中,会大体将开发模式分为四大类设计模式,分别为创建型设计模式,结构型设计模式,行为型设计模式和架构型设计模式[2]。而本游戏采用的正好属于是行为型设计模式中相对比较方便的迭代器模式。
创建型设计模式(Creating pattern),它是一种对处理和创建对象的一种设计模式。构建它的思想有两种,第一是隐藏这些具体类的实例给结合和创建的方式,另外一种则是封装该系统所使用的具体类。
第二种思想则是结构型模式。它这种模式更倾向于说为了解耦的目的,而通过改变代码本身的组织结构,这种思路也能让代码本身维护和扩展降低一些门槛,减少使用的难度。而架构型模式,它则是以一种一蹴而就的方式来诠释和理解各个元件之间的关系,而在此过程中也潜移默化的使得设计变得更加的简约。
行为型设计模式,它的目的是让多个类或对象完成相互协作的目的,使得可以一起完成一个类或一个对象没有办法独立实现的任务。而迭代器模式,它则是提供了一种方法和顺序,以用来对一个糅合在一起的对象中的各种元素进行访问,而同时它也在此过程中隐藏该对象的内部表示。在迭代器模式中,存在四种器,分别是具体容器(ConcreteAggregate),抽象容器(Aggregate),抽象迭代器(Iterator),具体迭代器(ConcreteIterator)。因为STL的流行,开发者大部分都知道迭代器模式的这个设计了,而我们对任何形式的资源进行统一的管理时,经常会将其聚合起来,形成一个List,或者是一个Vector,在这种条件下我们都需要一个工具方便我们对其进行访问,而迭代器无疑是一个对此进行访问的好用的工具。这种开发模式,在编写游戏时非常有用,其优点在于不管开发工作进行到哪个阶段,你自始至终都有一个可运行的程序以便用来对其进行测试。如果在后续提取代码模块时出现问题,你可以通过与上一次可正常运行的代码对比以快速地找出错误,同时在开发过程中也很容易看到自己码下来的成果,对一些开发者来讲也是一种心理上的激励。
2.2 涉及技术
2.2.1 Qt库
Qt库是一个跨平台的C++开发库[3],大部分的开发者主要用来开发用户界面比较多,即耳熟能详的UI,相对比较冷门的用法则是开发命令行程序,它由纯c++语言开发,但它也存在着对一些脚本语言的绑定,而且可以适用于市面上大部分的系统,Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多其它功能,比如多线程、访问数据库、图像处理、音频视频处理、网络通信、文件操作等[4]。大部分应用程序都可以使用 Qt 实现,除了与计算机底层结合特别紧密的,则不能使用操作系统自带的函数库。而且,使用QT开发标准GUI界面,比起其他工具的开发效率至少高了一个数量级。因为QT库比MFC庞大很多,而且QT的许多机制比MFC先进很多。它不但是一个通用的跨平台的面向对象的应用程序接口库,更是一种C++语言的扩展,一种编程平台和应用程序框架[5]。
2.2.2 C++ 语言
众所周知,当今世界上有多种编程语言,每种语言都有自己的优缺点。对于游戏开发,绝大多数人都会使用 C++,它仍然是大多数游戏开发人员的首选语言[6]。稳定、可靠、高性能和功能丰富都是开发者对它的评价。它面向对象,这意味着当它在对游戏代码进行解析时,它将游戏的各个部分变得更有逻辑性,使这些代码在计算机的角度看来更易于理解和使用。另外,从起源来看,之前的闭源思想已经让人们习惯于使用C++来解决游戏开发中的各种问题。用现在的术语来说,就是“造轮子”的意思。C++这门语言,在以前就受到游戏开发者的青睐,到现在也就得到了许多库的支持,从而使C++可以设计图形且这些图形会相对更为复杂。这是一种温和的函数式、面向对象、可模板化的语言,与C一样简洁,虽然不像后起之秀的 Golang/Swift 语言那样笨重,但对于游戏开发来说已经足够了。C++可以很好地管理内存,允许开发者通过控制参数来优化游戏。这就是为什么一些大型游戏可以在低规格PC上运行良好的原因。另外,游戏的高性能场景让C++无可替代[7]。别的不说,简单的帧同步,每秒30/60帧,多人数据同步。目前,使用C++,我们只能支持每台机器数千个数据包,或者大约每秒 100000 个数据包。当机器成本无法显着优化时,技术风险和迁移成本不会增加。在一些卡牌游戏中,后端也有大量的数字密集型计算。尽管它可以在架构上实现分布式和可扩展性,但降低机器成本也很重要[8]。这一点对于大型网游来说尤为重要,因为即使他们能在原本的基础上优化10%,背后的机器数量也未必是一个可以忽略不计的数字。
2.3 本章小结
综上所述,以上涉及的技术和开发方式,将在本次项目开发中提供实际支持,并且由于技术工具其本身具有的特性,有望在本次开发中起到不可或缺的作用。通过对该项目的开发,也有望提高自身对所设计技术的认识和理解。