基于Unity3D的第三人称游戏设计与实现开题报告

 2021-11-21 16:15:30

1. 研究目的与意义(文献综述)

1、目的及意义(含国内外的研究现状分析)

1.1 研究目的及意义

随着科技时代的到来,计算机硬件、网络通信等技术迅猛发展。游戏开发从2D游戏逐渐往3D游戏转变。近几年的3D游戏综合运用了物理仿真、计算机图形学、网络通讯等多个方面的知识,在游戏的高质量和高效上有了飞速的进展,成为广大用户偏向的游戏类型。加上快节奏的生活方式带来的压力,3D游戏在全世界范围传播的越来越快。

2019年,中国游戏市场实际销售收入2308.8亿,同比增长7.7%;中国游戏用户规模达到6.4亿,同比增长2.5%。数据说明中国游戏市场有着很大的经济效益,同时也提供了大量的就业岗位,也丰富了人们的文娱生活。但是近些年在中国游戏市场火爆的游戏都基本是由代理商代理或者购买版权进行改编加工,中国游戏市场缺乏自身的产品创新和技术革新。因此国内游戏开发的技术革新是人们面临的亟待解决的问题,中国游戏研发的投入有着重要的意义。

在游戏开发中,引擎毫无疑问是很重要的一环。Unity3D是一款综合场景管理,资源管理,底层封装的跨平台游戏引擎。其易上手,多教程引导的特点,让国内外开发者都为之喜爱。不仅如此Unity3D在建模、场景搭建和动画制作上也应用广泛,所以学习使用Unity3D顺应了当前趋势,也对自身技能进行了扩展。

1.2 国内外研究现状

关于电子游戏的形成至今尚无定论,但是在1947年美国的Thomas T申请了一个阴极射线管游戏的专利,它使用二极管来模拟导弹的发射,这被认为是电子游戏的雏形。随着电子计算机的发明,1952年A.S.Douglas在剑桥大学利用大型计算机EDSAC开发出一个三子棋的游戏,1958年William Higinbotham利用示波器和模拟计算机开发一个名为《双人网球》的游戏,再到德国发明家Ralph Baer开发出第一款独立游戏主机并转让给电视制作商Magnavox[1]。从这以后,电子游戏就在PC端和独立主机端飞速发展。

近些年游戏的研发逐渐从2D转变成了3D,逐渐从大型设备转变为了便携设备。这是随着计算机硬件的更新和时代社会背景的变革而演变的[2]。而现在的游戏开发框架基本都为C(客户端)/S(服务器端)框架。

在客户端中,Unity3D作为主要核心开发引擎之一,凭借其跨平台和易操作成为国内外厂商的开发引擎选择,例如《神庙逃亡》,《炉石传说》等都是由该引擎开发来的[3]。Unity3D可供编辑和IDE优势,基于对象的组件系统和用代码来驱动对象等要素成为游戏开发者的最佳选择[4]。代码驱动对象的实际应用就是通过给组件对象绑定脚本来进行操作[5]。因为C#作为脚本语言有易上手等特性,所以常见Unity3D使用的脚本语言为C#[6]。Unity3D引擎的图像渲染层调用的接口在Windows系统上采用了Direct3D图形函数库。Direct3D和OpenGL一样都是计算机图形学相关开发技术,主要研究了图形输入、图形描述、图形变换等基本问题[7]。而三维物体如何显示成二维图像是计算机图形学要解决的一大问题,这就用到了渲染管线。渲染管线的多个流程共同作用,最后将三维图型投影,裁剪到二维平面上,使得其能够在二维平面上显示[8]。Direct3D封装了一些COM对象,为访问系统硬件提供了一个主要接口[9]

交互多个客户端是服务器端的主要功能,常见建立客户端与服务器之间的连接方法是基于TCP/IP协议的RPC远程调用框架。这样客户端之间的交互都统一发送给服务器,由服务器来进行信息转达和信息反馈[10]。随着互联网应用的复杂度和用户访问量的激增,国内外中大型互联网企业都已采用了分布式RPC框架作为核心中间件,使用RPC框架可以满足服务器的性能,可用性和易用性[11]。RPC中需要有通信协议和序列化与反序列化编码选择。近些年Python以语法程序极其简洁清晰步入开发者眼中。Python作为一种面向对象并呈现出动态的通用程序语言[12],可以通过其他语言实现新功能,有着自己的高效数据结构和内存回收机制,被广泛应用在各种开发场景中,尤其是网络编程[13]。Python动态的数据结构和标准库,为使用者提供了很大的便捷,用户不再需要定义详细的数据类型, 万物皆对象,具体的实现封装在底层,虽然牺牲了一定的性能,但是扩展了很多使用的技巧[14]。序列化与反序列化的编码方式有很多,常用的例如Json,XML等都具有很好的应用效益。Google protocolbuffer(简称Protobuf)作为一种兼容性较好,高效率的二进制数据传输格式,多用于分布式应用之间的数据通信或者异构环境下的数据交换。而XML与Json都是以文本的数据保存方式,在序列化与反序列化性能上Protobuf都要优于他们。在数据保存体积上,XML的大小最大,Json适中,Protobuf较小,所以Protobuf在通信系统上确实给系统效率和安全性带来较大的提高[15]

2. 研究的基本内容与方案

2、研究(设计)的基本内容、目标、拟采用的技术方案及措施

本文以设计一个第三人称射击3D游戏为目标,主要分为客户端和服务器端两个部分。

客户端基于Unity3D进行开发,Unity3D底层提供给我们相应图形渲染和脚本编辑等系统。由于Unity3D的渲染层已经将Direct封装,我们不必过多关注底层渲染的问题,而重点放在逻辑层实现上。

图1 Unity3D框架

客户端为了实现基本功能,需要有战斗、资源、人物、技能等模块。

图2 客户端功能模块图

人物模块主要负责人物在场景中的移动和跳跃动作。Unity3D中将对象设置为GameObject自动赋予移动等功能。这时候我们需要为各种动作绑定相应动画,动画系统将自动形成动画状态机。实时同步人物坐标到服务器,再反馈给其他客户端。

技能模块将检测技能种类,判断技能是否能使用,以及根据技能模式采取不同表现形式。

战斗模块负责攻击的判定与伤害的计算,并反馈被攻击后的生命值变化。通过目标坐标和射击方向判断是否被攻击到再进行伤害和血量计算,反馈给服务器进行数值更新。

特效模块负责整个场景里面物体的音效、战斗特效、人物动画特效等。

资源模块负责存储各种地形、人物模型和场景资源等,管理分配好本地资源的调用。

登录模块由Unity3D编写GUI界面,在服务器存储个人账户的个人信息和游戏角色信息。

服务器端的意义是完成与多个客户端之间的信息交互。

图3 服务器客户端交互

整个服务器采用RPC远程调用架构。应用层为自己逻辑代码实现。序列化层使用Google Protocol Buffer进行序列化与反序列化,可以使传输具有高效性和安全性。协议层和传输层采用通信协议中的TCP/IP协议,利用Python里面的Socket编程为载体,进行端到端的信息传输。再通过底层网络发送和接受socket。

服务器端的功能需要和客户端模块相辅相成,客户端将相应模块需要交互的信息发送给服务器端,再由服务器进行信息的处理和分发。

客户端的基本功能如下:

1. 有简单的3D场景,可以供角色移动。

2. 人物角色可以用键盘和鼠标进行操作。

3. 游戏GUI有简单的界面信息,例如生命值,弹药数量等。

4. 摄像机以第三人称视角跟随角色。

5. 有简单的AI敌人,会自动攻击玩家。

6. 游戏带有音效,例如背景音乐、攻击音效、受击音效等。

7. 枪械攻击方式可以切换。

8. 枪械换弹有具体动作表现。

服务器端的基本功能如下:

1. 服务器可以同时接入多个客户端,通过TCP/IP网络协议进行多个客户端的交互。

2. 可以创建账号设置密码,建立/选择角色进入游戏。

3. 服务器端角色具有血量,弹药,等级经验等属性,可以保存在服务器端。

4. 游戏角色相关信息下线可以保存,上线可以恢复。

3. 研究计划与安排

3、进度安排

第1-3周:查阅相关文献资料,明确研究内容,了解研究所需理论基础。确定方案,完成开题报告。

第4-5周:熟悉掌握基本理论,熟悉Unity3D开发环境和使用,完成英文资料的翻译。

第6-9周:设计,编程实现软件架构。

第10-12周:完成客户端与服务器的调试,实现功能;撰写论文初稿。

第13-15周:修改毕业论文。

第16周:论文答辩。

4. 参考文献(12篇以上)

4、参考文献

[1] 李瑞森,焦琨.游戏概论[M].北京:人民邮电出版社,2016

[2] 刘寅斌,肖智戈,芦萌萌,等.我国网络游戏开拓海外市场现状及发展对策[J].商业经济研究,2018(24):171-174

[3] 龚高强.基于Unity引擎的3D游戏客户端系统设计与实现[D].武汉:华中科技大学.2016

[4] 程彬彬,王明鑫,商楠.浅谈游戏开发平台Unity3D的应用与发展前景[J].通讯世界,2016(14):236

[5] Kaplan,Vassili. UsingCustom Scripting and Modding in Unity Game and App Development[J]. CODEMagazine.2019,13:64-72

[6] Benjamin Perkins.Beginning C# 7 Programming With Visual Studio 2017[M]. Wrox,2018

[7]何援军.计算机图形学[M].北京:机械工业出版社,2016

[8] John F.Hughes.Computer Graphcis Principles And Practice Third Editon[M].彭群生.北京:机械工业出版社,2019

[9] Frank D.Luna. Introductionto 3D Game Programming with DirectX 12[M]. Mercury Learning and Information,2016

[10] 汪瑞.基于Unity3D的多通道下服务器客户端同步[J].现代计算机,2015(24):26-29

[11] 徐培德.基于Java的分布式远程过程调用框架的研究与实现[D].上海:上海交通大学.2016

[12] 刘瑞.Python语言在科学算法中的优势[J].信息与电脑,2019(4):57-58

[13] 陈东明.Python编程及其在网络科学中的应用[M].沈阳:东北大学出版社,2018

[14]Alban VERGNAUD,Jean-BaptisteFASQUEL,Laurent AUTRIQUE. Python based internet tools in control education[J].IFAC PAPERSONLINE.2015,48(29):43-48

[15]隋心怡,王瑞刚,梁小江.基于Google Protocol Buffer的即时通讯系统设计[J].电子科技,2017,30(1):119-122

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

发小红书推广免费获取该资料资格。点击链接进入获取推广文案即可: Ai一键组稿 | 降AI率 | 降重复率 | 论文一键排版