基于Unity3D的多人网络斗地主游戏的设计与实现.docx

上传人:b****3 文档编号:11184229 上传时间:2023-05-29 格式:DOCX 页数:67 大小:4.84MB
下载 相关 举报
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第1页
第1页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第2页
第2页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第3页
第3页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第4页
第4页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第5页
第5页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第6页
第6页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第7页
第7页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第8页
第8页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第9页
第9页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第10页
第10页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第11页
第11页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第12页
第12页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第13页
第13页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第14页
第14页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第15页
第15页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第16页
第16页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第17页
第17页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第18页
第18页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第19页
第19页 / 共67页
基于Unity3D的多人网络斗地主游戏的设计与实现.docx_第20页
第20页 / 共67页
亲,该文档总共67页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于Unity3D的多人网络斗地主游戏的设计与实现.docx

《基于Unity3D的多人网络斗地主游戏的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Unity3D的多人网络斗地主游戏的设计与实现.docx(67页珍藏版)》请在冰点文库上搜索。

基于Unity3D的多人网络斗地主游戏的设计与实现.docx

基于Unity3D的多人网络斗地主游戏的设计与实现

本科毕业设计(论文)

         

    

基于Unity3D多平台网络斗地主的设计与实现

学院名称:

 计算机工程学院  

专  业:

 计算机科学与技术 

班级:

    10工程W    

学 号:

   10141303  

姓名:

 丁小未   

指导教师姓名:

   朱明放   

指导教师职称:

  副教授 

 

二〇一四年 五月

基于Unity3D的多平台网络斗地主的设计与实现

摘要:

斗地主是一款非常经典的游戏,可以说是家喻户晓,玩法也比较的简单,娱乐性也比较强,老少皆宜。

随着互联网技术的飞速发展,斗地主呈现的形式也变得多样性,由传统的纸牌游戏衍生为移动端单机游戏,然后到多人多平台的即时在线联网游戏.形式的变化能够让人足不出户也能感受到和伙伴们一起玩游戏的乐趣。

本设计的游戏规则是针对一副牌为准,本文论述了网络斗地主游戏的基本算法设计以及大体的设计框架和思路,并且以图文,部分核心代码解释的形式展示出来。

本设计采用了Unity3D作为开发引擎,结合Visualstudio2010开发工具,通过基本的socket通讯和一些算法,最终实现了多平台的多人网络斗地主的设计。

本文基于Unity3D的游戏开发设计过程中,采用了MVC的设计模式,这也符合Unity3D工作模式;采用C#脚本语言也更符合Unity3D游戏设计面向对象的设计理念,游戏设计就是将面向对象这一特性发挥到极致;采用MONO开源跨平台框架能够大大节约游戏的开发效率以及开发成本,最后通过实际的完成效果来验证了基于Unity3D的多平台网络斗地主游戏设计具有高效性,高品质和低门槛性的特点。

关键词:

Unity3D,斗地主,手机游戏,游戏引擎,socket,网络通讯,MVC,MONO

Designand implementationofmulti-platformnetworkLandlordsBased Unity3D

Abstract:

Landlordsisaclassicgame, whichcanbesaidtobeahouseholdname。

The rulesarerelativelysimple,andkind oftheentertainmentisrelativelystrong.Asaresult,thegamehasgainpopularityamongboththeyoungandtheold。

Withthe rapid developmentofInternettechnology, theformofthe gameis ofgreat diversity.The gamederived from thetraditionalcardgame, thenturned intothestand—alonemobilephonegame,andnowhasbecomeamulti -platform instantonline multiplayernetworkedgame.Thechangesinthegame formmakepeoplewhostay athome enjoyingthefun ofplayingthegametogether。

Thedesignof therules isaccordingtoadeckof cards. ThearticlediscussesthebasicnetworkLandlords algorithmdesignandthegeneralframeworkandideasof thegame.Thegame interpretsitselfsuccessfullybythegraphicformand thepartofthecorecode.This design usesthe Unity3D as adevelopmentengine.Besides,itcombined withVisualstudio2010developmenttools. Ultimatelywe finish thedesign ofamulti-platformmultiplayeronlineLandlordsbysomealgorithmsandthe basicsocketcommunication.

Thearticleisbasedon the design processof Unity3Dgamedevelopment. TheMVCdesignpatternisconsistentwithUnity3Dmode, andC# scripting languageisgoodfor thedesignobject-oriented designof Unity3Dgame.Object—orientedgamedesignis supposed to makethebest ofthe feature。

TheMONOopensourceframeworkcangreatlyreducetheefficiencyofgamedevelopmentaswellasdevelopmentcosts。

Finally we validatethehighefficiency,high— qualityandlow-thresholdcharacteristicsofthe multi-platformnetworkgamewhichbasedonLandlords Unity3Dbyachievingtheactualresults.

Keywords:

Unity3D,Landlords,mobilegames,gameengine,socket,networkcommunications,MVC,MONO

 

 

前言1

第1章 概述ﻩ2

1。

1系统开发背景2

1.2 设计的目的ﻩ3

1.3设计的意义3

第2章 开发环境及相关技术介绍4

2。

1 开发环境介绍ﻩ4

2.1。

1 Unity3D简介4

2.1.2VisualStdio2010和MonoDevelop5

2。

2.2 Javascript语言6

2。

3IOCP框架简介7

2.3。

1IOCP内部工作队列图ﻩ7

2.3。

2 程序实现IOCP模型的基本步骤ﻩ8

2.3。

3使用IOCP模型和不使用IOCP模型通讯的对比ﻩ8

2。

4本章小结ﻩ10

第3章系统需求分析ﻩ10

3。

1用户功能需求分析ﻩ10

3.2 系统性能要求ﻩ10

3.3可行性分析ﻩ10

第4章总体方案设计11

4.1 纸牌设计11

4.1。

1牌型设计11

4.2 C/S模式ﻩ12

4。

2。

1基于C/S模式的服务器端设计流程图ﻩ12

4.2.2 基于C/S模式的客户端设计流程图12

4.3游戏逻辑程序结构ﻩ13

4。

3。

1数据层13

4.3.2 控制层13

4.3.3显示层ﻩ14

4.4 游戏设计流程图14

第5章详细设计与系统实现ﻩ16

5.1斗地主洗牌算法16

5.2斗地主之“排序"算法16

5.3 基于IOCP的Socket通讯ﻩ18

5。

4。

1玩家状态设计19

5.4.2 玩家的属性以及手牌的操作方法ﻩ20

5.5 Table对象的设计21

5.5.1桌子状态设计21

5。

5.2Table的属性及方法ﻩ21

5.6粘包问题23

5.6.1TCP和UDP的介绍以及区别23

5.6。

2 粘包介绍及处理23

第6章发布和测试25

6.1服务器端性能检测ﻩ25

6。

2打包发布Android应用27

6.2。

1导出Android设置27

6.2。

2真机效果图ﻩ28

6。

3 打包发布IOS应用29

6。

3.2真机效果图ﻩ31

6.4打包发布Web应用32

6.4.1关于UnityWebPlayer的SandBoxSecurity(安全沙盒机制)32

6.4.2 导出Web设置ﻩ32

6.4。

3运行结果ﻩ33

6。

5打包发布PC/Linux应用ﻩ34

6。

6整体测试效果34

结束语ﻩ40

致谢ﻩ42

参考文献ﻩ43

附录A网络斗地主的游戏规则44

附录B部分程序代码ﻩ47

前言

近年来,随着科技和互联网的飞速发展、智能手机的迅速普以及性能的不断提升,游戏行业也突飞猛进,游戏已经逐渐成为人们公认的第九种艺术。

现在各个平台上的游戏逐渐涌现,从最初的红白机,到PC机再到XBox平台发展到如今的手机移动平台,从端游到页游再到手游甚至是体感游戏等表现形式也逐渐丰富,当然成功的也数不胜数。

比较大型的游戏有:

反恐精英、星际争霸、使命召唤,生化危机等.当然也涌现了诸多经典的网络小游戏,比如麻将、拖拉机、中国象棋等。

此外手机游戏,如愤怒的小鸟、保卫萝卜、FlappyBird、切水果、捕鱼达人等也赢得许多人的青睐。

这些各种各样形式的游戏给如今生活在网络时代的人们带来了无限的生活乐趣.

斗地主是一款相当经典的游戏,当然前人也做了不少版本,有移动端,pc端甚至是Web端的。

可能他们在设计的过程中只是正对某一平台然后使用特性的开发技术来开发,这样的话如果想要实现多平台的设计就需要极大的时间成本和劳力成本。

而Unity3D引擎的问世,最大的解决了这一问题,它能够实现一次开发多平台发布的特点,这也是为什么Unity3D引擎在短暂的时间里能够发展的如此迅速的原因.将斗地主游戏从单机版到网络化,使得现实中的多个玩家能够在同一个虚拟房间里面进行对局,并且能够实时的聊天,同时还不会受到平台的限制,你可以选择pc,web或者是移动端,从而能更好的体验游戏,娱乐生活.

 

第1章概述

1。

1系统开发背景

随着Unity3D引擎的横空出世,游戏开发技术也变得越来越成熟,这款引擎也逐渐改变了整个游戏圈的开发格局,之前火遍了全球的神庙逃亡就是基于Unity引擎开发的一款比较成功的手游大作,这也更很好的证明了Unity作为一款游戏引擎还是值得开发者的信赖。

Unity相比较之前大家都熟悉的Unreal虚幻引擎,我认为Unity做的更好,它最值得人称赞的就是它的跨平台性是其他游戏引擎无法匹敌的,Unity能够做到一次编写多平台发布,能够大大节省了项目开发周期以及开发成本,并且还得够达到Unreal虚幻引擎开发出的那种游戏体验效果。

Unity开发也算是基于.NET平台上的一个拓展,它的内核是Mono框架,而Mono是基于。

NET的一个跨平台的继承开发环境,它能够很好的移植到各个平台,所以Mono的问世也给广大.NET平台开发者带来了福音,终于不会在收到微软的约束,开发出来的东西只能运行在windows平台。

正因为这样,Unity也是一致收到广大.NET开发者的喜爱.发展至今Unity已经支持了基本国内外所有的主流平台。

也正是因为这一特性,才使得更多的公司更多的开发者对它抛出了橄榄枝,达到了开发出来的游戏,不要受平台的限制,能够给玩家更多不同的平台体验,它的这一特性也推动了Unity引擎的飞速发展.

结合自身的优势,由于我大学期间一直自学的。

NET开发,所以还是有一定的。

NET开发基础和经验,加上喜欢钻研,学习了其他Android、IOS等移动平台开发,所以了解的技术范围还比较广泛,感觉做Unity开发能将我所了解的这些多平台开发的知识能够很好的融会起来,所以当第一时间了解到Unity之后,我就对它产生了浓厚的兴趣。

之所以选择做斗地主游戏,因为首先我觉得它是一款比较经典的游戏,经典的往往能够是永恒的,在日常生活中,斗地主也常常是人们娱乐的一个项目之一,当然想完成它还是有一定的难度,设计都不少的算法,并且我将其网络化,开发起来对我而言还是有一定的挑战性,但又不是力所不能及,只要努力一下还是能实现的。

因此就确定了这个多平台的多人网络斗地主的课题.

 

1.2设计的目的

从玩家的角度,这种网络小游戏满足了玩家休闲的需求,让玩家换一种方式重温经典,能够在不同的平台,不同的的地区,还能够在同一个“房间”进行对局,也可以实时交流,也能结识更多的朋友,增加了游戏体验的乐趣,从而丰富了人们的业余生活,在紧张的工作之余带给人们最大程度的放松。

从自身的角度,将大学所学的理论知识应用于真实的项目开发,做到了理论与相结合,理论知识指导实际操作,实际操作反过来也巩固了理论知识,从而更好的提升了自己的能力和项目经验。

1。

3设计的意义

通过亲自实践,验证了Unity3D引擎的跨平台性,也系统的了解到一个游戏项目设计的整个流程,从最初的规划到最后的实现,为今后走上工作岗位打下基础.最后能够圆满实现,锻炼了自己的能力,同时做出来的游戏也增加了人们业余生活的乐趣。

ﻬ 

第2章开发环境及相关技术介绍

2。

1 开发环境介绍

所谓工欲善其事,必先利其器。

要做一个项目的开发,首先得选择好合适的开发工具,市场上行行色色的开发工具很多,这就需要要对比选择,根据项目需求选择最佳的搭配工具。

本设计采用的开发环境是Windows7旗舰版操作系统,搭载Unity3D4.2.0f1专业版引擎.采用VisualStdio2010IDE编辑C#脚本。

2.1。

1Unity3D简介

Unity是由UnityTechnologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

Unity能够运行在Windows和MacOSX系统下,可发布游戏至Windows、Mac、Wii、iPhone、Windowsphone8和Android等平台。

也可以利用Unitywebplayer插件发布网页游戏。

Unity具有强大的脚本系统,它的核心思想是面向对象,把游戏场景中有所的物体都抽象成可编程的对象,从而将游戏编程转化为游戏对象的控制和调度,而控制游戏对象和对象调度的就是我们所说的脚本系统,关系图如下(图2-1):

图2-1 Unity脚本系统

2.1.2Visual Stdio2010和MonoDevelop

VisualStdio作为微软最引以为傲的集成开发环境,敏捷的智能提示、排版以及稳定的性能,是任何语言的IDE都无法比拟的。

因此C#语言开发,当然首选Visual Stdio。

但是VisualStdio不支持Unity的Debug(调试),必须要到AssetStore(Unity的插件商量)去购买一个UnityVS插件才能够实现断点调试功能。

而MonoDevelop是基于.NET的一个跨平台的集成开发环境,主要支持的语言也是C#。

Mono作为.NET向跨平台和开源的先驱,它打破了微软一惯封闭的风格,因此Mono也得到了业界的广大好评和重视。

MonoDevelop是Unity自带的集成开发环境,相比较VS的优势就是能够不依赖插件从而实现断点调试,还有就是能够在其他平台上运行,但是它也有弊端,没有VS那么强大的提示功能,对中文支持也不够友好,可以说这两个IDE来编辑Unity脚本个有利弊,看如何取舍,一般都是选择前者。

2.1.3Xcode简介

Xcode是苹果公司向开发人员提供的集成开发环境,用于开发MacOSX,iOS的应用程序,Xcode具有较强的编译速度。

Unity导出IOS程序的时候需要导出Xcode工程,然后由Xcode编译导出发布,当然还需要申请安装苹果开发官方的开发者证书。

文章最后在介绍Unity工程导出成IOS版本安装到ios移动设备上会详细介绍流程以及注意事项。

2.2C#语言和Javascript脚本

这两者都是Unity开发支持的语言,当然还包括boo脚本,但一般不怎么用boo脚本作为开发语言,前两者语言,C#国内人用的比较多,Javascript国外开发者用的比较多,接下来我们就做一个对比,这两种语言开发Unity有什么异同.在这里,因为Unity是基于.NET平台,而C#是.NET平台主推的语言,因此我就选择了C#,能够更好的兼容。

NET的一些库文件。

2.2.1C#语言

C#是微软公司再2000年6月发布的一种全新的且简单、安全、面向对象的程序设计语言,是专门为。

NET应用开发而诞生的一种新的计算机语言。

它吸收了C++、Visual Basic、java等语言面向对象的特性,又继承了C语言的语法简约的风格,体现了当今最新的程序设计技术的功能和精华.不同的是,C#面向对象模型已经面向了Internet进行了重新设计,它使用的是.NET框架的类库,为了安全起见不再主张指针类型的使用,当然也是可以使用指针,在程序中要做特殊申明。

对指针使用的弱化,避免了程序异常访问系统内存地址而带来的隐患,从而更体现了它的健壮性的特点。

C#不支持多继承,避免了以往类层次结构中由于多重继承带来的难以控制的特点,C#主张用接口来实现而不是多继承,主要的目的就是减少程序的复杂性,减少出错的可能性,使运行效率更高。

NET框架为C#提供了一个强大的、易用的、逻辑结构一直的设计环境。

同时,公共运行时(CommonLanguageRuntime)为C#语言提供了一个托管的运行环境,使程序比以往更加稳定、安全。

C#语言的特点有:

.语言简洁优雅、安全稳定

.保留了C++面向对象的特性

能够快速开发应用

.强大的开发控件

支持跨平台

2.2.2 Javascript语言

Javascript是一种直译式、动态、弱类型、基于原型的脚本语言,内置支持类.它的直译器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML网页上使用,用来给HTML网页增加动态功能。

Javascript语言的特点:

.简单性

动态性

.跨平台性

.安全性

2。

3  IOCP框架简介

IOCP全称I/O CompletionPort,IOCP模型属于一种通讯模型,适用于(能控制并发执行的)高负载服务器的一种技术,基于IOCP通信的的服务器是以多线程的方式实现了与多个客户的消息并发交互,可以合理有效的处理客户端端的消息,可以使得系统内存资源得以合理的利用,有效的解决了因多线程竞争所带来的问题。

2.3.1 IOCP内部工作队列图

如下图2—2(源于IOCP本质论),简节明了的看出IOCP本质其实就是创建一个线程池然后内部是以队列和栈的方式来处理客户端交互请求。

图2—2 IOCP内部工作队列图

2.3。

2 程序实现IOCP模型的基本步骤

如下图(2—3),最重要的步骤还是创建了线程池来管理大量线程的切换处理从而提高了服务器端的性能。

图2-3程序实现IOCP模型步骤

2。

3.3使用IOCP模型和不使用IOCP模型通讯的对比

对比图如下(图2-4),很明显能看出不一样的地方,不适用IOCP,用普通的socket连接,我做过测试,对服务器内存资源消耗比较大,貌似上百多个客户端连接之后服务器端就容易崩溃,内存发出警报,健壮性是服务器端程序首当要考虑的,而测试使用IOCP模型的客户端能够达到2K-3K左右的稳定连接,并且内存资源消耗还比较小,下文测试章节会有具体的截图。

图2-4使用IOCP和不使用IOCP框架通讯对比

2.4 本章小结

本章主要介绍了开发Unity游戏所需要的脚本语言以及开发环境。

之所以选择C#而非js是因为C#语言更面向对象和具备一些高级的特性(封装,继承,多态,反射和泛型等),它也是国内的主流开发语言之一,而Javascript相对比较容易入门,语言本身是弱类型不需要那么严谨,在实际商业项目开发中不是太收推崇。

因此本次设计以C#语言编写,同时采用MonoDevelop4。

0调试和VisualStdio2010集成开发环境。

服务器端基于IOCP模型搭建的比较稳定、高效、健壮的服务器应用程序。

第3章系统需求分析

3.1  用户功能需求分析

系统是由登录,叫地主,出牌,压牌,判断胜负,用户奖惩机制,实时聊天,退出等功能组成。

该斗地主是根据民间盛行的扑克牌游戏演变而来,融入了现代电子游戏快捷便利,能更好的满足玩家的游戏体验以及提升业余生活的乐趣,达到缓解压力的效果。

3.2系统性能要求

系统必须稳定安全,对异常处理要做的比较完善,首先确保的是服务器端的稳定高效的运行,服务器采用的收费阿里云服务器,里面承载的是经典的windowsserver2003服务器系统,然后服务器端采用的是IOCP框架用Winform应用形式呈现出来。

3.3 可行性分析

我将从以下几点分析该设计的可行性:

(1)经济上的可行性

考虑到是多人在线网络斗地主,而非仅局限于局域网的范围,因此就必须有一个稳定的外网服务器,目前我在公司管理着公司用的阿里云服务器,因此我决定临时可以租用一下公司的云服务器,经济上是可行的。

(2)技术上的可行性

本系统不需要差大规模的计算和非常高的性能要求,可能需要处理一些中级一点的并发处理问题,对服务器端的性能还需要有一定考究,但不至于力所不能及,还有一些关于牌类的算法,例如洗牌算法,发牌算法,压牌算法等,但通过自己的思考相信也应该是可行的。

(3)资源可行性

虽然没有美工做配合,但网上搜集一些简单的免费的图片还是能够找到,可能效果不是非常的理想,但从程序实现的角度,基本能达到预期的要求,如果以后想要完善,可以找专门的美工做好图片然后进行替代即可。

(4)游戏可玩性

玩家可以通过设置用户名进行登录进游戏大厅进行多人对战,如果还想要做的完善一些可以专门接入腾讯或者新浪微博的sdk,用专用的账号登录或者是普通注册即可,用户也可对其个人信息进行修改。

第4章总体方案设计

4.1纸牌设计

4.1。

1牌型设计

总所周知,一张纸牌是由数字、花色、背面所组成,在设计游戏之前先设计出一副牌的所有模板,这里列举一些部分牌的截图(图4-1):

图4—1牌型

搜集出一整副牌的图片,然后程序里就可以通过代码来调用显示到界面。

4。

1。

2 出牌类型(游戏规则)设计

出牌类型有很多种,包括:

单牌、一对、三张、三带一对、四张一样(炸弹)、王炸(大小王)、三连对、飞机等,详细游戏规则可以参考附录A。

4。

2 C/S模式

C/S(Client/Server,客户机/服务器)结构,是大家熟知的客户机和服务器结构。

它是软件系统体系结构的一种.主要是由客户端应用程序(Client)和服务器端程序(Server)以及中间件(middle)三个部件组成.客户端应用程序是是系统中用户跟服务器进行数据的交互的部件。

服务器端程序负责有效个管理系统资源,处理多个客户端连接请求以及跟多个客户端进行数据交互。

4.2.1基于C/S模式的服务器端设计流程图

服务器端处理客户端连接流程,参见下图(图4-2)

图4—2 服务器端处理流程

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2