基于unity的回合制网游战斗系统的研究与实现Word下载.docx

上传人:b****2 文档编号:13413559 上传时间:2022-10-10 格式:DOCX 页数:41 大小:314.96KB
下载 相关 举报
基于unity的回合制网游战斗系统的研究与实现Word下载.docx_第1页
第1页 / 共41页
基于unity的回合制网游战斗系统的研究与实现Word下载.docx_第2页
第2页 / 共41页
基于unity的回合制网游战斗系统的研究与实现Word下载.docx_第3页
第3页 / 共41页
基于unity的回合制网游战斗系统的研究与实现Word下载.docx_第4页
第4页 / 共41页
基于unity的回合制网游战斗系统的研究与实现Word下载.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

基于unity的回合制网游战斗系统的研究与实现Word下载.docx

《基于unity的回合制网游战斗系统的研究与实现Word下载.docx》由会员分享,可在线阅读,更多相关《基于unity的回合制网游战斗系统的研究与实现Word下载.docx(41页珍藏版)》请在冰豆网上搜索。

基于unity的回合制网游战斗系统的研究与实现Word下载.docx

1.1回合制游戏简介2

1.1.1广义上的回合制游戏2

1.1.2狭义上的回合制游戏2

1.2回合制战斗系统简介2

1.3实践项目«

简介2

第2章开发环境和部分涉及技术简介4

2.1开发环境简介4

2.2Unity协同程序4

2.2.1Unity协同程序简介4

2.2.2Unity协同程序的运用4

2.3单例设计模式5

2.3.1单例设计模式5

2.3.2单例设计模式的运用6

2.3.3单例设计模式在Unity中的运用7

2.4分包算法7

2.4.1分包的原因7

2.4.2环形缓冲区(CircularEuffe"

7

2.4.3分包算法流程图9

第3章战斗动画实现方案的研究与对比11

3.1研究背景11

3.2实现方案一:

有限状态机11

3.3实现方案二:

协同程序(Coroutine)12

3.4方案抉择结论13

第4章回合制网游战斗系统设计14

4.1回合制网游战斗系统设计14

4.2回合制网游战斗系统服务器实现思路15

4.3回合制网游战斗系统客户端实现思路15

4.4战斗系统框架结构(以实践项目«

PKer》为例)16

第5章回合制战斗系统实现18

5.1战斗系统相关消息结构体的定义18

5.2服务器战斗系统的实现20

5.2.1服务器战斗系统相关结构体20

5.2.2初始化一个战局23

5.2.3接收客户端的战斗指令消息23

5.2.4处理战斗指令并发送动画消息24

5.2.5说明27

5.3客户端战斗系统的实现27

5.3.1客户端战斗系统功能模块28

5.3.2客户端战斗系统相关数据类型28

5.3.3进入战斗后初始化战斗角色29

5.3.4下达战斗指令并发送战斗指令消息29

5.3.5接收战斗动画消息30

5.3.6收到战斗动画播放消息并播放战斗动画30

5.3.7战斗动画实现细述35

第6章项目测试39

6.1进入战斗测试39

6.2普通攻击功能测试39

6.3使用技能功能测试40

6.4使用物品功能测试41

结论43

参考文献44

致45

随着网络的普及与迅速发展,网络游戏已经成为电子游戏中的主流。

网络游戏的战斗系统主要可分为即时制和回合制两种模式。

即时制战斗系统侧重于刺激、反应、操作性,战斗节妻快C而回合制战斗系统侧重于休闲、战略、配合,战斗节奏慢。

早期的电子游戏由于设备硬件条件有限,大多采用回合制战斗系统。

随着科技的发展和设备硬件的提升,如今回合制游戏的数量比例有所下降,但回合制游戏在国游戏市场依旧占据着想当大的份额,仍有大量玩家热衷这种战斗模式,几款众所周知的国产单机游戏如《轩辕剑》系列、《仙剑奇侠传》系列、《古剑奇谭》系列以及国在线人数最多的MMORPG《梦幻西游》均是采用回合制战斗系统的游戏。

本人也是热衷干回合制战斗系统的玩家之一,可纵观近年来国回合制游戏的发展,国回合制游戏一直止步不前,《轩辕剑》系列、《仙剑奇侠传》系列、《古剑奇谭》销量下降,MMORPG《梦幻西游》也有降温迹象,甚至国大多回合制网游只是复制在《梦幻西游》或“换皮”,缺少创新和突破。

本人希望在研究和实现回合制战斗系统的基础上,能够找到突破和创新点。

同时在游戏编程方面,即时制逻辑较为简单明了清晰,而回合制则比较繁琐复杂,而且在Unity引擎上实现回合制战斗系统的相关资料较少。

综上原因,本人撰写本文,希望能对志同道合者有所启发,同时也寻求学术交流。

项目将在2017年6月开源,开源地址https:

//pan.baidu./share/home?

uk=1017424337

By江正觊2016.6

第1章绪论

1.1回合制游戏简介

1.1.1广义上的回合制游戏

凡“我方与敌方在单个回合轮流行动,只有轮到我方(自己)的回合或者是新的回合开始时,才可进行行动”的游戏,都可归类为广义上的回合制游戏,而且绝大大多数情况下,单个回合敌我双方行动次数相同。

从广义上来说,回合制游戏围非常广,棋牌、卡牌、战棋策略、回合制战斗模式都能归为此类。

1.1.2狭义上的回合制游戏

狭义上的回合制游戏,是从广义回合制游戏中细分,特指回合制战斗模式的游戏,与即时制战斗模式相对。

1.2回合制战斗系统简介

在回合制战斗模式下,每个回合开始时,敌我双方各自为双方战斗角色下达战斗指令,待双方所有角色下达完战斗指令或超过时限(回合制网络游戏均会设置下达战斗指令的时间限制)后双方所有角色开始行动,一般根据角色自身“速度(敏捷)”的属性数值轮流行动,期间若果某一方符合战败条件(某方全体阵亡或全体人物阵亡)则战斗结束,如所有角色行动完后敌我双方均没符合战败条件,则进入下回合,如此循环。

1.3实践项目《PKer»

简介

《PKer»

是一个以回合制竞技和社交为卖点的PC和移动端跨平台网络游戏,是游戏与社交APP的融合体。

游戏主要玩法是玩家与玩家之间的回合制战斗PKo

通过移动设备GPS定位功能(PC端无法使用),能够快速搜索在你身边的游戏房间和玩家,与其开展战斗。

游戏提供一定数量的基础装备和宠物让玩家任意领取,故玩家可以随时更换装备和宠物,新玩家也能以此为基础投入到战斗中。

更强的装备和稀有的宠物通过合成、付费租用等渠道获得C角色的属性和职业也可以随时更改,以便随时改变战术和改变在队伍里中的定位。

第2章开发环境和部分涉及技术简介

2.1开发环境简介

本文实践项目的服务器采用国IOCP开源框架"

HP-Socket”,并且连接到Mysql数据库,客户端采用近年比较火热的强大跨平台引擎Unity3D(2D,C#)并且使用Sqlite作为嵌入式数据库。

2.2Unity协同程序

2.2.1Unity协同程序简介

协同程序(Coroutine),通常简称“协程”,顾名思义,是一段协助的程序(方法),很多人以为它是另开一个线程执行一段程序,其不然,实际上它是从主线程每帧或每隔一定时间调用的程序。

当协程创建后,主线程中创建协程的语句后面的代码块会“挂起”,直到协同程序结束后,才会继续执行创建协程语句后面的代码。

当协程中的代码执行完或者使用yieldbreak语句时,协程才会结束,并且返回到主线程中的创建该协程的语句的位置,继续执行后面的代码。

协程中使用yieldreturn帧数/newWaitForSeconds(秒数)语句可以实现隔多少帧或多少秒后再执行后续代码。

另外协程可以嵌套协程,利用协程的特点和嵌套,可以实现很多复杂和有趣的功能,十分强大。

2.2.2Unity协同程序的运用

协程广泛地运用在计时、延迟、控制物体运动、等待物体状态的改变、有顺序地让物体执行一系列动作等方面上。

根据协程的特点,协程中可以使用“循环+条件判断+yieldreturn帧数/newWaitForSeconds(秒数)”实现每隔多少帧或者多少秒后再次执行条件判断语句,当判断语句满足跳出循环,从而让协程代码执行完结束,回到主线程继续执行后续代码,利用此功能,可以很方便地实现某物体达到某状态后再执行程序。

示例代码:

主线程代码

StartCoroutine(actor.Move(getAttackPosition(nTargetIndex)));

Inti=0;

协同程序Move方法

publicIEnumeratorMove(Vector3destPos)

{

while(transform.localPosition!

=destPos)

transform.localPosition=Vector3.MoveTowards(transform.localPos辻ion,destPos,GlobalData.BATTLE_SPRITE_MOVE_SPEED*Time.deltaTime);

yieldreturn0;

}

上述代码中,主线程Startcoroutine方法创建一个协程Move,待协程Move执行完成返回后,主线程才执行匸0语句。

可是协程Move的返回条件有点特殊,yieldreturn0语句表示协程运行到此处挂起,等下一帧再从本语句继续运行,由于yieldreturn0在while循环,所以不管yieldreturn0多少次,都依然在while循环,而且while循环每一帧循环一次。

直到while不满足循环条件(即transform.localPosition==destPos),则协程能够完成使命执行完成并返回。

可以猜测到,所控制的物体可能通过Update方法或者其他方法每帧在移动,直到移动到目标地点,才执行主线程后面的代码。

2.3单

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

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1