新書推薦:
《
紫云村(史杰鹏笔下大唐小吏的生死逃亡,新历史主义小说见微之作,附赠5张与小说内容高度契合的宣纸彩插)
》
售價:NT$
449.0
《
现代吴语的研究(中华现代学术名著3)
》
售價:NT$
296.0
《
天下的当代性:世界秩序的实践与想象(新版)
》
售價:NT$
352.0
《
德国天才4:断裂与承续
》
售價:NT$
500.0
《
妈妈的情绪,决定孩子的未来
》
售價:NT$
194.0
《
推拿纲目
》
售價:NT$
1836.0
《
精致考古--山东大学实验室考古项目论文集(一)
》
售價:NT$
1112.0
《
从天下到世界——国际法与晚清中国的主权意识
》
售價:NT$
347.0
|
編輯推薦: |
本书展示的是游戏局内核心功能的制作过程,以及UI的基础使用方法。
还提供锐亚教育网络学习卡,在网站上输入学习卡号,就可以观看相关课程的视频教学课程。作者提供的平台还能学习更深入的手游商业级开发课程。
|
內容簡介: |
2015年年底,《王者荣耀》手游横空出世,游戏上市后仅仅一个月的时间,游戏每月下载量就稳定在35万次左右,在随后的半年内攀升到70万次左右。仅2017年一年,《王者荣耀》以约300亿元人民币流水获得了全球手游收入排行榜冠军。
《王者荣耀》这种现象级手机游戏是如何制作出来的呢?本书将揭开《王者荣耀》的神秘面纱,带领读者学习MOBA类手游的制作全过程。
在本书案例中,使用Unity游戏引擎演示客户端的开发流程,使用Node.js演示游戏服务器端的开发流程,使用MySQL提供数据库服务,并演示如何部署商业级游戏服务到Linux服务器上。
本书篇幅有限,所以只演示游戏局内核心功能的制作过程,以及UI的基础使用方法。在熟练掌握本书知识点与开发技巧之后,建议读者访问锐亚教育网站(http:www.insideria.cn)学习更深入的商业级开发课程。
本书适合从事游戏制作的从业人员和相关专业的学生阅读。
|
關於作者: |
郑宇
锐亚教育创始人
10余年IT从业以及教学经验
研究领域从技术机图像学到计算机人机交互,游戏设计与制作等众多领域。
工作经历:
Adobe 中国flash技术布道师
联众游戏公司休闲游戏制作人
锐亚科技创始人
|
目錄:
|
第1章 快速开始 1
1.1 Unity软件的下载与安装 2
1.1.1 Unity软件的下载 2
1.1.2 Unity软件的安装 2
1.2 Thanos游戏开发框架的下载与安装 3
1.2.1 Thanos 游戏开发框架的下载 3
1.2.2 Thanos 游戏开发框架的安装 4
1.3 NGUI组件的下载与安装 4
1.4 本书配套资源的下载 5
第2章 游戏UI界面搭建 7
2.1 NGUI插件详解 8
2.1.1 UI Root的概念 8
2.1.2 UI Lable的概念 9
2.1.3 UI Sprite的概念 9
2.1.4 UI Panel的概念 10
2.1.5 UI Button的概念 11
2.1.6 UI Grid的概念 12
2.1.7 UI Scroll View的概念 12
2.2 游戏UI界面搭建 13
2.2.1 游戏登录界面UI搭建 13
2.2.2 游戏战队匹配UI界面 19
第3章 游戏局外主要逻辑开发实现 23
3.1 游戏登录模块的开发 24
3.1.1 事件定义 25
3.1.2 事件注册 25
3.1.3 事件广播 26
3.1.4 使用范例 26
3.2 游戏网络通信开发 28
3.2.1 设置服务器信息 28
3.2.2 网络信息处理 29
3.2.3 消息序列化与反序列化 29
3.3 登录逻辑实现 34
3.3.1 基础知识 34
3.3.2 完善登录逻辑 38
3.4 匹配逻辑实现 45
3.4.1 Time类基础知识 45
3.4.2 完善匹配逻辑 47
3.5 英雄选择逻辑实现 50
3.5.1 基础知识 50
3.5.2 完善英雄选择 54
第4章 战斗场景逻辑开发 63
4.1 场景元素生成 64
4.1.1 地形生成 64
4.1.2 英雄生成 70
4.2 玩家控制 74
4.2.1 虚拟摇杆的使用 74
4.2.2 英雄移动状态 76
4.2.3 英雄自由状态 80
4.2.4 技能控制 82
4.2.5 血条处理 89
4.2.6 死亡处理 94
第5章 Thanos游戏框架消息机制 99
5.1 游戏框架介绍 100
5.2 委托与事件 101
5.2.1 委托的概念 101
5.2.2 事件的概念 102
5.3 消息机制 104
5.3.1 添加监听器(AddListener) 104
5.3.2 派发事件(BroadCast) 106
5.3.3 移除监听器(RemoveListener) 106
5.3.4 事件类型定义(EGameEvent) 107
5.3.5 事件处理器 108
5.3.6 使用范例 109
第6章 网络基础与协议简介 111
6.1 网络基础 112
6.1.1 网络模型 112
6.1.2 TCPIP 模型 115
6.1.3 Socket套接字 115
6.1.4 TCP通信 118
6.2 网络层框架 120
6.2.1 网络管理器 120
6.2.2 网络初始化 120
6.3 通信协议 126
6.3.1 通信协议概念 126
6.3.2 消息处理中心 127
6.3.3 消息发送 130
6.4 序列化悍将Protocol Buffer 132
6.4.1 ProtoBuf的概念 132
6.4.2 ProtoBuf-net的下载与使用 132
6.4.3 数据转换 133
6.4.4 序列化结构数据 134
第7章 Node.js开发环境搭建与通用游戏服务器介绍 137
7.1 Node.js服务器开发环境搭建 138
7.1.1 Node.js介绍? 138
7.1.2 软件安装与资源下载 140
7.1.3 Node.js环境搭建 141
7.2 通用游戏服务器介绍 144
7.2.1 游戏服务器的定义 144
7.2.2 游戏服务器的作用 145
7.2.3 游戏服务器的架构 145
第8章 5分钟编写功能强大的游戏服务器 151
8.1 自动化生成服务器 152
8.1.1 创建serverframework.ts文件 152
8.1.2 编写生成器 152
8.1.3 远程安装Thanos游戏开发框架模块 156
8.1.4 匹配工具目录路径 157
8.1.5 指定程序入口函数 157
8.1.6 生成框架文件 158
8.1.7 测试服务器 158
8.2 穿透服务与网络壁垒 159
8.2.1 TCP服务 159
8.2.2 Socket套接字 162
8.2.3 TCP服务网络模型 162
8.3 解析服务器框架功能 165
8.3.1 server模块 165
8.3.2 client模块 168
8.3.3 MySQL模块 170
8.3.4 logger模块 173
8.3.5 const模块 176
8.3.6 utils模块 177
8.3.7 action模块 178
第9章 Thanos 服务器框架说明 179
9.1 核心概念 180
9.1.1 Thanos服务框架 180
9.1.2 实时数据通信 180
9.1.3 消息处理机制 180
9.2 TypeScript常用语法 180
9.2.1 Export与Import 181
9.2.2 Map 181
9.2.3 async与await 183
9.3 服务器端功能实现 186
第10章 实现服务器的连接 189
10.1 发送消息 190
10.2 事件触发器 190
第11章 MySQL数据库在游戏中的应用 193
11.1 体验MySQL数据库 194
11.1.1 MySQL数据库发展史 194
11.1.2 MySQL的下载 194
11.1.3 MySQL的安装 195
11.2 SQL结构化查询语言基础用法 198
11.3 MySQL游戏数据库设计 200
11.3.1 创建数据库 201
11.3.2 框架对数据库的支持 202
第12章 Node.js环境中XML配置文件的处理 205
12.1 XML语言简介与MOBA游戏配置模板 206
12.2 读取单个XML文件 207
12.3 批量结构化XML文件工具的使用 208
12.3.1 不结构化数据的弊端 208
12.3.2 自动化的优势 208
12.3.3 自动化生成TS结构化数据文件 208
12.4 结构化数据的调用方法 215
12.4.1 加载配置数据 215
12.4.2 获取静态数据 216
第13章 Protocol Buffer协议在游戏场景中的应用 217
13.1 Protocol Buffer原理介绍 218
13.1.1 ProtoBuf消息定义 218
13.1.2 协议格式制定 218
13.2 《王者荣耀》通信协议概览 221
13.2.1 Protocol Buffer 协议源文件 221
13.2.2 客户端编译 222
13.2.3 客户端编译数据 222
13.2.4 序列化结构数据 223
13.3 使用Thanos服务器框架调试消息 223
13.4 服务器端编译 225
13.5 批量处理协议的命令行文件编写 229
13.6 生成PB文件完整批处理脚本 232
13.7 实例讲解 234
13.7.1 模拟客户端 234
13.7.2 服务器消息接收 236
第14章 账户验证模块 237
14.1 登录模块 238
14.1.1 接收请求 238
14.1.2 应答请求 238
14.2 登录成功验证 239
14.3 账号合法性验证 240
第15章 游戏匹配机制 243
15.1 随机数的产生 245
15.2 二分算法 245
15.3 数据容错处理 246
第16章 游戏节奏的控制与AI算法 249
16.1 制作JavaScript定时器 251
16.1.1 JavaScript定时器工作原理 251
16.1.2 设计定时器 256
16.1.3 在游戏中应用定时器 256
16.2 A*寻路算法 257
16.2.1 A*算法基本原理 258
16.2.2 A*寻路算法代码实现 265
16.3 AI行为树 273
16.3.1 行为树简介 273
16.3.2 行为树基本原理 273
16.3.3 行为节点 274
16.3.4 控制节点 274
16.3.5 选择节点 276
16.3.6 实例演示 276
16.4 技能模块 279
16.4.1 技能处理 279
16.4.2 技能程序框架 280
|
內容試閱:
|
2015年年底,《王者荣耀》手游横空出世,游戏上市后仅仅一个月的时间,游戏下载量就稳定在35万次左右,在随后的半年内再次攀升到70万次左右。仅2017年一年,《王者荣耀》以约300亿元人民币流水获得了全球手游收入排行榜冠军。
那么,《王者荣耀》这种现象级手机游戏是如何制作出来的呢?本书将揭开《王者荣耀》的神秘面纱,带领读者学习MOBA类手游的制作全过程。
在本书案例中,使用Unity 2018游戏引擎演示客户端的开发流程,使用Node.js演示游戏服务器端的开发流程,使用MySQL提供数据库服务,并演示如何部署商业级游戏服务到Linux服务器上。
本书篇幅有限,所以只演示游戏局内最核心功能的制作过程,以及UI的基础使用方法。在熟练掌握本书知识点与开发技巧之后,建议读者访问锐亚教育网站(http:www.insideria.cn)学习更深入的商业级开发课程。
本书还提供锐亚教育网络学习卡,在网站上输入学习卡号,就可以观看相关课程的视频教学课程。
游戏核心技术介绍
注册登录模块
注册登录模块是所有游戏开发的第一步,在《王者荣耀》中是使用微信和QQ账号进行快速登录的,但是对于游戏本身,无论采用哪种方式登录,都需要在游戏内部建立自身的账号体系。在用户使用快捷方式登录的同时,游戏自身会自动地为用户在USER数据库中注册相关用户信息并且进行登录操作。在登录逻辑实现模块的教学过程中,会给读者演示如何创建用户与实现登录过程。负载均衡服务器的作用是,给用户推荐相对空闲以及用户所在区域内访问速度较快的服务器,在后边的教学中也会给读者演示如何制作服务器负载均衡器。
输入账号和密码并选择服务器之后,就可以登录游戏了。那么,账号与密码在服务器端是如何进行验证的,数据库又是如何存储玩家战斗信息的?这些内容在后续课程中会详细讲解。
游戏局内道具商店系统
在进入战斗前,首先需要通过商店购买出门装备。每个玩家进入战斗场景中都得有初始点券(以后统称为CP)。玩家可以通过CP来购买装备。游戏道具在游戏中是非常重要的,那么它们是怎么制作的呢?需要使用什么技术来实现呢?
游戏道具系统的制作需要客户端与服务器端协作完成,客户端除了要使用功能强大的NGUI插件,还使用到许多与服务器进行通信、与校验有关的技术。
游戏登录状态
首先来了解登录模块。登录模块处于登录状态,此状态下的主要内容就是选择服务器,输入账号与密码,登录成功后可以选择开始游戏,也可以切换账号退出登录,或者重新选择战场,也就是重新选择连接的服务器。这是登录模块的功能。
游戏大厅状态
登录完成后就会进入游戏大厅中,切换为大厅状态。游戏大厅中包含了四大部分:主页、战斗、商城、社交。游戏大厅的内容很多,比如签到系统、英雄介绍、符文合成、战斗模式选择、英雄与符文的购买等。因为这个游戏的内容过于庞大,所以在本书以及视频中主要讲解主线,也就是进入战斗部分的内容。在此模块中,读者主要学习窗口的切换以及匹配战斗。
游戏英雄选择状态
等待匹配完成后,下一个状态就是英雄选择了。在此模块中,包括可选英雄的显示,如何更新选择的英雄并确定,倒计时的显示,等等。其中涉及的细节较多,战友的匹配组合是在服务器端完成的。
游戏状态
确定英雄之后就要进入最重要的模块了,也就是游戏状态。此状态的界面中包含了很多内容,比如技能面板的显示与每个技能按钮的功能、摇杆是如何控制英雄移动的、战斗的更新、英雄的回城,等等。游戏过程中最重要的是技能释放与伤害处理。对于英雄战斗属性的更新以及伤害值的计算都是在服务器端进行的。客户端负责显示,服务器端负责逻辑运算。游戏胜利的标志是敌方箭塔被销毁,之后游戏进入最后一个状态游戏结束状态。
游戏结束状态
以主基地被销毁为标志,此时游戏进入最后一个状态游戏结束状态。此模块中的主要内容不多,先是显示正常游戏的战绩,然后是离开战场。游戏状态就此切换,那么切换到什么状态呢?等进入此模块中就了解了。这就是游戏的最后一个模块。整个游戏就是几种状态的切换,不同状态完成不同的事件。
游戏用户交互系统
英雄的位移是通过虚拟摇杆来控制实现的,拖动虚拟摇杆可以控制英雄的移动方向。那么虚拟摇杆是如何控制英雄移动的呢?多玩家在游戏场景中的位移又是如何实现的呢?
英雄移动相对比较简单,当服务器端接收到客户端的移动请求后,服务器赋予英雄速度与方向,在移动过程中是需要时时检测的。比如会遇到墙体等碰撞体,那么就要动态检测英雄的移动方向是否可行。以英雄为中心点水平向四周辐射8个点,检测这8个点是否可行,可行就将新的位置点赋予英雄。当移动到某一个点后,又以英雄的新位置点再次辐射进行移动,这是英雄移动的原理。在A*寻路算法一节中会详细地介绍。
关于多玩家在游戏场景中的位移同步以及攻击同步等,这些问题涉及的知识点比较多,这里就不再赘述了。在后续的视频课程中,会详细地介绍如何实现多玩家的同步。
游戏人物状态机实现与优化
在游戏中,无论是小兵、NPC,还是英雄,都大量使用了游戏状态机。什么是游戏状态机?在游戏中如何使用它呢?
游戏人物会在不同的环境中激发不同的状态,它们都由状态机(States)组成,在不同的事件(Event)中激发不同的动作(Action),再通过函数将状态从现态迁移到次态。状态机也有多种类型,比如有限状态机(Finite State Machine)、无限状态机(Infinite State Machine)等。
游戏粒子特效系统
无论是普通攻击还是技能攻击,攻击时释放的特效都会为游戏的视觉效果与体验加分不少,但是如何随心所欲地制作出你所想的特效呢?
那就需要掌握Unity 粒子特效系统。什么是发射(Emission)?什么是纹理动画(Texture Sheet Animation)?什么是物理发射源(Sub Emitters)?什么是拖尾(Trails)?什么是渲染(Renderer)?
游戏NPC的制作
NPC是游戏中唯一使用到AI技术的部分。如何制作出不同智商的NPC成为游戏开发中比较有趣而且实用的技巧。在制作NPC时,会大量使用行为树、决策树、有限状态机等技巧。在NPC游戏怪物部分中会详细介绍有关制作技巧。
游戏数学
无论是新颖的玩法,还是酷炫的特效,都离不开数学知识,特别是制作一款3D游戏,矢量、矩阵、四元数、射线、简单的物理学都会在游戏制作过程中被大量运用。
配套视频网站
本书配套的视频内容由锐亚教育与英赛德游戏研发中心联合制作,请参考本书提供的视频课程学习卡,并且按照该学习卡使用手册购买相关视频内容(请在浏览器中输入网站地址:http:www.insideria.cn)。
课程目标
掌握Thanos MOBA类游戏开发框架
掌握NGUI搭建UI界面技术
掌握Unity中级开发工程师应具有的开发技术
掌握大型网游网络通信技术
掌握Node.js大型网游服务器开发技术
掌握MySQL数据库在游戏开发中的应用技术
掌握游戏常用算法原理
掌握游戏AI制作技术
本书适合读者
独立游戏制作人
游戏从业者
游戏爱好者
重度游戏玩家
大学毕业生
给大脑的建议
游戏编程需要大脑记忆大量的信息。大脑的存储空间有限,它总是在渴求新奇的东西,搜寻并期待着不寻常的事情发生,再把它们保存下来。那么,如何让你的大脑神经元爆发并释放出化学物质来增强你的记忆力呢?
举个例子,你去野生动物园时,一只老虎出现在你身后并跟你Say Hi!此时此刻,你的大脑中会发生什么呢?我相信你对这事会终身难忘。大脑就像个筛子,这个筛子显然会把不重要的东西筛掉。
一种简单的方法是告诉你的大脑:嘿,大脑,学这本书的内容很重要,这样能帮你一天内就实现一个小目标,帮我把这些东西记下来!OK!快去给你的大脑神经元点火吧,爆发你的学习热情,踏上你的学习之旅吧!
致谢
参与本书编写与校稿工作的人员除了郑宇、周志超、张清,还有王兆明、谷雪娇、翟佳、李皓颖。
虽然在本书的编写过程中,力求叙述准确、完善,但由于水平有限,书中欠妥之处在所难免,希望读者和同仁能够及时指正,共同促进本书质量的提高。
再次希望本书能为读者的学习和工作提供帮助!
|
|