收藏 分享(赏)

浅谈炉石传说开发技术.doc

上传人:j35w19 文档编号:7824563 上传时间:2019-05-27 格式:DOC 页数:5 大小:47.50KB
下载 相关 举报
浅谈炉石传说开发技术.doc_第1页
第1页 / 共5页
浅谈炉石传说开发技术.doc_第2页
第2页 / 共5页
浅谈炉石传说开发技术.doc_第3页
第3页 / 共5页
浅谈炉石传说开发技术.doc_第4页
第4页 / 共5页
浅谈炉石传说开发技术.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、题目 浅谈炉石传说开发技术 姓名与学号 3110104246 吴双 年级与专业 大四 软件工程 所在学院 软件学院 浙江大学本科生1本来是想继续谈谈三国杀这个游戏的开发技术的,但这个游戏是个网页游戏,开发技术没什么新意可谈。所以经过了思考选择了炉石传说这个暴雪出了不久的卡牌游戏。之所以选择炉石传说,确实是有几点原因的:1、炉石传说开发所用的成本可以说是目前卡牌游戏里最高的了,毕竟是暴雪出品。2、炉石传说的开发引擎是 unity3d,这点暴雪并没有声明,但是从所放出的代码文件看确实是 Unity 3D 的文件。而 Unity 3D 作为一个流行不久的开发引擎,也有很多可谈之处。3、炉石传说无论从

2、背景还是机制,都做的是相当不错。可以说整个游戏的设计都相当值得借鉴,在我看来,游戏设计远比游戏开发重要。因此,在之后我会花费一部分篇幅来谈谈炉石传说的设计。先谈谈 Unity 3D 吧,我们小组的 3d 游戏大程就是按照老师的要求使用 Unity 3D 开发,因此对 Unity 3D 也有了一定的了解。目前,在海内外渐成趋势的跨平台游戏领域,Unity 3D 引擎显然是各大厂商关注的焦点。其一是该引擎的游戏设计能力强,画面效果不逊于虚幻 3;其二便是跨平台应用的功能,能够实现游戏在 PC、 PS3、XB360、iOS 等平台的无缝并存。时至今日,国内外跨平台游戏领域在不到一年时间内,已经涌现出

3、数十款 PC 端的 Unity 3D 网游,而基于该引擎的手机游戏更是多达数百款。Unity 的游戏和应用可以用 C#语言,UnityScript 或者 Boo 来开发,其编译过程根据不同的目标平台而变化。在PC,Mac 和 Android 平台上,游戏代码可以被编译成字节码,可以用 JIT 编译器执行。在其他平台上,游戏代码需要预编译,在建立的时候转化成为目标机器的本地代码。Unity 开发平台包括可视化编程工具和基于 MonoDevelop 的 IDE,还有 3D 补偿引擎,脚本语言环境,工作流系统和团队合作版本控制。Unity 还运营着 Asset store,这里面有超过两千种开发工具

4、和游戏组件(艺术效果,编码,声音等),其中包括着一系列入门级基本功能产品免费为初学者提供。Unity 的用户可以通过为全部的平台(除了 web浏览器) 编写本地代码插件来从 Unity API 之外获取操作系统的功能和第三方代码库支持。在移动平台方面,Unity 最近展示了一系列的设备 API,只有 25%的 Unity 开发人员需要加速计和多点触控与设备 API之间更好的集成性能,而其他厂商的均值有 38%,显然 Unity 做得比别人好一些。我曾经看过一个 U3D 开发炉石传说的教程,讲的很详细。因此对用 U3D 开发炉石传说也有一定的了解。首先自然是界面制作,这里使用的是现有的资源。然后

5、是整体的机制,U3D 采用的开发语言是C#,javascript 和 Boo,对 Boo 的了解有限,是一门类似 python 的语言。炉石传说目前仅仅有 1V1 的游戏,玩家可以选择和其他玩家或是电脑对战。炉石传说共有九个职业,玩家可以先自己选择职业然后配一套牌与其他玩家进行游戏,战斗流程是轮抽机制。炉石传说的卡牌分中立卡牌和职业卡牌,中立卡牌即所有职业都可以用,职业卡牌即只有特定的职业才可以用。玩家需先自行配一套 30 张卡牌,才能与其他玩家进行游戏。炉石传说以 wow 故事为背景,在平衡性方面做得也是相当不错,因此吸引了很多玩家。同时炉石传说有着容易上手,难于精通的特点(这也是大多数卡牌

6、游戏所共同具有的特征),因此可以作为休闲游戏,同时也有着一定的竞技性。炉石传说实现了 ipad 玩家和 pc 玩家的共同游戏,算是一个不错的特性。虽然没有公布相关的技术,但我想要实现这一点应该相当不易。更何况炉石传说的开发团队是暴雪所有开发组中最小的一个!然而正是因为开发团队小,所以开发者们才能更好地追求自己的炉石传说之梦,而且能更把注意力集中在更重要的事上。开发组的每个人都喜欢卡牌游戏,更关键的是,暴雪也喜欢!炉石传说的目标炉石传说是一个全民游戏。无论谁都可以上手。开发者尽量让游戏显得简单却又不乏深度。如果一周就玩厌了可不行。让炉石传说更有质感。玩家会有种自己真的拿着实体牌一样。游戏细节非常

7、精细,多姿多彩炉石传说以魔兽世界为基础,更重要的是,开发组希望保持魔兽的感觉,而且还要加入更多蠢萌的元素,游戏节奏要快,因为要做移动终端,所以每局时间不能太长,用自动充能的法力水晶作为资源有效地加快了游戏节奏,你不必等资源牌配置,游戏必须有趣,抛弃了诸如资源摧毁和 MILL 的卡牌游戏方式,使得玩家不会感觉太绝望。炉石传说前前后后重做了不少内容。曾经做过没有文字版的实体卡牌,上面只有图像和攻击,生命值,结果玩起来也不错。所以出场的牌上面没有文字说明。在实体卡测试过后才开始网络测试。这里学到了不少界面设计。如果你正在攻击对手而且已经设好了战斗技巧,那么你可以在对手出牌局打出一张牌来扰乱对方攻击。

8、最后发现去掉战斗技巧这个机制让游戏更有趣,节奏也更快。界浙江大学本科生2面的卡通效果越做越多,制作电子卡牌游戏让开发者完成了一些在现实世界无法完成的事情。例如思维窃取,诺滋多姆和穆克拉。大部分开发者都喜欢征募模式 Draft mode,炉石同样也有。还有一个就是网络游戏的匹配,无论网络游戏怎么分类,它始终离不开客户端和服务器端。即使是网页游戏,它也需要浏览器的支持。Client/Server 结构是现今网络游戏中最基本也最重要的框架。从开发的角度来看,常见 Client/Server 结构的网络游戏可分为以下类型。一是客户端到客户端的类型。大多数对战型的网络游戏都采用这种结构。这里的对等是指在

9、有多个玩家参与的游戏中,其中一个玩家的机器既是 Client 有扮演 Server 的角色,通常由创建游戏局的玩家担任,称为主机。第二种是大厅和会话的结构。首先应该知道会话和大厅的含义。以一个提供聊天服务的网站为例,登录之后可以看到网页上有可供选择的话题 A 和话题 B。选择话题 A 点击进入,便可以和所有位于话题 A 的人聊天。此时,我们把话题 A叫作session(会话),并称所有位于话题 A 的人正在进行一场会话。并可以将这样一个聊天室网站称为大厅。可以根据自己的需要创建会话或加入别人的会话,也可以取消自己所创建的会话。第三种是真正的client/server 类型,也是最重要的一种类型

10、。大多时候,需要的是成千上万的人在进行同一场游戏,这些玩家在游戏世界中持续存在并且被记录下来,而这种游戏才是现在最大的热门,通常可以称之为图形化多人在线 RPG 游戏,炉石传说所采用的即是第三种。下面是根据教程所写的炉石传说的客户端-服务器通信流程,使用 TCP 协议,类似于网站那样的短连接。玩家 A 服务器消息区 玩家 B回合开始 STARTTURN使用卡牌 A,造成结果 B USE:A|EFFECT:B 每隔 5 秒从服务器端读一次 A 的行为,改变当前战场状态,知道读取到 ENDTRUN 消息使用卡牌 C,造成结果 D USE:C|EFFECT:D回合结束 ENDTURNSTARTTUR

11、N 回合开始每隔 5 秒从服务器端读一次 B 的行为,改变当前战场状态,知道读取到 ENDTRUN 消息 USE:A|EFFECT:B 使用卡牌 A,造成结果 BUSE: C|EFFECT:D 使用卡牌 C,造成结果 DENDTURN 回合结束请求分类 游戏新建一个游戏 新建一个游戏加入一个游戏 加入一个游戏认输 认输,退出一个游戏等待游戏列表 获取等待加入者游戏的列表确认游戏启动状态 确认游戏是否处于启动状态是否为先手 是否为先手动作抽牌 抽牌回合结束 回合结束行动 改变战场的动作浙江大学本科生3然后再附上核心代码:客户端-服务器-核心库核心库:委托形式/ / 抽牌委托/ / 先后手区分/

12、法术定义public delegate List delegateDrawCard(Boolean IsFirst, int DrawCount);/ / 抽牌魔法( 服务器方法)/ public static delegateDrawCard DrawCard;客户端:实现委托/ / 初始化/ public static void Init() /抽牌的具体方法CardUtility.DrawCard += DrawCardAtServer;/ / 抽牌(服务器方法)/ / public static List DrawCardAtServer(Boolean IsFirst, int Co

13、unt)/向服务器提出请求,获得牌return GameStatus.DrawCard(IsFirst,Count);服务器端:实际操作牌堆/ / 抽牌浙江大学本科生4/ / / / public static List DrawCard(Boolean IsFirst, int Count)var targetStock = IsFirst ? FirstCardStock : SecondCardStock;return targetStock.DrawCard(Count);(调用 Card 核心库方法)/ / 抽卡/ / / public List DrawCard(int CardCount)List newList = new List();for (int i = 0; i CardCount; i+)if (CardList.Count = 0) break;newList.Add(CardList.Pop();return newList;除了之前所说,炉石传说还运用了许多其他技术,在此就不一一赘述。

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报