书籍作者:姜雪伟 | ISBN:9787121304323 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:5415 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
《Unity 3D 实战核心技术详解》详细介绍了实际游戏开发中使用的核心技术,每一章都结合了游戏开发的实战案例。首先,介绍了3D 数学在Unity 中的运用,3D 数学知识包括:Unity 坐标系统、向量、矩阵、四元数、欧拉角等基础知识。其次,介绍了游戏开发中常用的核心技术:Avatar 换装系统、消息事件系统、Protobuf 在游戏中的运用,以及游戏中的文本文件加密算法等。再次,介绍了游戏中的AI 行为树算法、残影算法、移动端实时阴影绘制、移动端海水的绘制等技术。然后,在游戏架构设计方面,介绍了经典的针对UI 的MVC 架构设计和对于角色动作和技能的FSM 有限状态机架构,以及游戏版本迭代使用的热更新技术方案。介绍了移动端GPU 编程和游戏开发的一些经验。
《Unity 3D 实战核心技术详解》适合具备一定Unity 开发经验的初学者和有一定Unity 项目开发经验的游戏开发者阅读。
姜雪伟,
创业公司技术合伙人,从事IT行业15年,主导或参与了18款大型游戏的研发;
曾在网龙、久游、趣游等知名IT公司担任核心技术团队负责人;
在泰课和CSDN学院等在线教育网担任高级讲师,CSDN社区专家;
研究方向为客户端架构、3D引擎架构、图形学算法、GPU编程等,目前负责公司3D引擎的研发工作;
工作之余,喜欢用书籍记录自己多年的技术积淀。
★这是一本从实战项目总结出来的好书
★从数学及Shader出发为大家揭露开发的机密
★在架构的角度上介绍了游戏的UI模块、IO模块、Sound模块、Net模块等
★在游戏制作的角度上讲了UI的制作、角色的加载及使用、场景的制作(地形、树木、水、阴影等)、粒子和物理系统的使用
★让读者接触到一个真正的商业项目中遇到的一些难题和解决方案
★本书作者从业15年,本书是其多年一线开发经验和实际运用技术分享
在IT 行业中游戏程序员的薪资相对于其他领域来说还是比较高的,这也导致了许许多多的软件开发者转入游戏行业,从事Unity 3D 游戏开发。Unity 引擎因为具有上手快并且能跨平台开发的优点,被众多开发者所喜爱。虽然游戏研发公司对开发人员的需求越来越大,但是初次踏入游戏行业的开发者由于游戏产品项目经验不足,并不被游戏公司所认可。我在泰课在线教育做讲座时发现,有的学员水平还是不错的,但由于他们在游戏行业的工作经验不足,最终很难被游戏公司录用。如今,政府和公司支持的各种创客空间的兴起,为开发者提供了非常好的硬件条件,极大地促进了IT 行业的繁荣发展,特别是游戏和软件开发的发展。
但是游戏行业也是一种技术浓缩型行业,作为一名从业者,要想在这个行业生存和发展,没有过硬的技术是不行的。可是,多年的从业经历让我见到许许多多的年轻人,他们在公司里只能写一些简单的逻辑,长期被边缘化,随时都有被辞退的危险。究其原因,还是他们缺乏解决实际问题的经验,在公司的产品开发中无法提供价值。在和他们接触的过程中,我发现了一个很严重的问题:这些能力欠佳的年轻人也有强烈的欲望去学习专业知识,但是市场上的Unity书籍讲述的都是一些入门的基础知识,已经远远不能满足手游开发工作的需要,他们急需能够与实际开发相结合并且能够帮助他们解决实际问题的书籍。作为他们的前辈,我也有过相似的经历,花费了很多时间去摸索,我一直在思考如何才能让后来者少走弯路。经过多年的经验积累,我终于奉上了这本呕心沥血之作。本书讲述的所有知识点都是与实际开发密切相关的,很多代码可以直接拿过来运用到项目中,实用性超强!
本书致力于用最通俗的语言讲述初学者最需要的知识。在写作形式上,本书采用图文并茂的方式,让读者更容易掌握知识,为开发能力的提升提供了巨大的帮助。在技术知识的安排上,本书并没有把核心技术一一讲解,而是选择了一些游戏开发中经常使用的技术。
本书的编写不同于只写对Unity 编辑器的一些基本操作的书籍。本书重点讲解游戏开发中实际运用的技术,分享游戏开发经验,阅读完本书,游戏开发者在技术方面和开发经验方面都会有一个质的提升。本书并不是介绍一个游戏是如何制作的,而是介绍游戏开发中的各个核心技术点。因为对于现在的游戏公司来说,核心技术只掌握在少数几个人手里,其他人很难接触到,他们或者是在已有框架的基础上开发,或者是使用已经封装好的技术模块开发。这样对于开发者技术的提升是非常不利的,也不利于增长实际项目开发经验。本书的宗旨就是把游戏中使用的核心技术无偿奉献给开发者,让开发者在最短的时间内提高自己的技能。
姜雪伟
2016 年10 月
推 荐 序
Unity 跨平台引擎这几年在国内的发展势头非常迅猛,截至目前已经横跨27 个主流游戏平台,尤其是在手游开发领域发展势头尤为凸显。大量的中小型公司几乎都使用Unity 开发游戏。所以在App Store 和Android Market 上有大量用Unity 开发的优质游戏或应用。开发者青睐Unity主要有两个方面原因,一方面是Unity 很方便就能跨平台,另一方面是Unity 上手快,但是在我看来它受欢迎最主要的原因是上手快。
跨平台。Unity 能一键发布在27 个平台上,但是每个平台的特性是不同的,甚至可以说完全不一样。比如代码层面,接入移动SDK,不是所有厂商都能提供Unity 的SDK 接口。一些平台特定的API,Unity 可能没有提供,或者说还没来得及提供,在这些复杂情况下我们只能通过原生方法去调用它。此外,硬件层面内存CPU 性能的不同,操作层面触屏、手柄、PC 实体按键也都不同,游戏玩法从设计上不可能都一样,所以真正的跨平台并不是随随便便打个包就能完事的。
上手快。Unity 底层全部使用 C/C++与 OpenGL ES 3D 渲染引擎交互,C#端封装了UnityEditor.DLL 和UnityEngine.DLL,通过与Unity 内部C/C++代码交互从而与底层代码相互调用。从开发层面看,开发者不用考虑怎么实现复杂的图形学、3D 数学算法,甚至完全不懂OpenGLES 的同学也能用 Unity 开发游戏。因为一切复杂的东西 Unity 在底层都封装好了,开发者只需要编写C#代码访问Unity 提供的UnityEditor.DLL 及其提供的API 接口即可从容地开发3D 游戏。听起来是不是很酷炫呢?可是Unity 依然存在很多隐患。
目前看来Unity 确实很强大,能做的东西确实很多。但是它却有点“臃肿”了。做过Unity手游开发的人应该都知道,Unity 的效率并不高。在UI 层面,无论是NGUI,还是UGUI,界面元素稍微多一点打开界面的时候就会出现卡顿。在3D 层面,同屏人数多一点或者Shader 复杂一些,帧率马上就掉下去了。Unity 引擎“大而全”,它为了各个平台的兼容性,性能问题必然会显现出来,因为没办法对某个游戏平台做针对性的优化,加上Unity 没有开放源码,开发者更多时候只能靠“猜”,所以有些更大的公司会使用自研引擎。
关于热更新,我觉得它更多是用来修正游戏Bug 的。如果没有热更新,修改一个Bug 后需要重新提交App Store 评审,这样来来回回可能要耽误好几天时间,不是很合理。由于苹果禁止了JIT,Unity 官方没有提供热更新的方案,因此我们都采用Lua 进行热更新的开发。虽然Lua的解释器可以用C++代码解释,但是在处理Lua 与C#之间穿透的时候依然会很慢,程序设计不合理就会产生性能问题。
所以Unity 最大的痛点就是性能问题,它上手确实很快,但是想学好却是一件很难的事情。脚本开发非常地灵活,但是太灵活就可能会被滥用。现在的互联网上已经充满了各式各样的Unity 教程,但是大多数都比较零散,我们太需要一本从实战项目总结出来的好书。姜雪伟的这本新书,从数学以及Shader 层面出发,通过实战项目经验的分享以及框架层面的剖析为大家揭露开发的机密,不可不读。
宣雨松MOMO
资深Unity 3D 开发者
推荐序
推荐语
前言
第1章 3D数学与UNITY
1.1 Unity坐标系
1.2 向量
1.2.1 向量的加法
1.2.2 向量的减法
1.2.3 向量点乘
1.2.4 向量叉乘
1.3 矩阵
1.3.1 平移矩阵
1.3.2 矩阵缩放
1.3.3 矩阵旋转
1.4 四元数
1.5 欧拉角
1.6 小结
第2章 AVATAR换装系统
2.1 换装原理
2.2 换装代码实现
2.3 小结
第3章 消息事件封装
3.1 消息类型定义和封装
3.2 消息事件的监听与分发
3.3 小结
第4章 PROTOBUF在游戏中运用
4.1 Protobuf消息结构体定义
4.2 编写Protobuf结构体
4.3 Protobuf转换工具制作
4.4 Protobuf文件在Unity中的运用
4.5 小结
第5章 游戏中的文本文件加密
5.1 配置文件格式
5.2 文件加载接口
5.3 文本文件加密算法及应用
5.4 小结
第6章 行为树在游戏中的运用
6.1 行为树插件介绍
6.2 案例讲解
6.3 小结
第7章 残影
7.1 残影的技术实现
7.2 Demo展示
7.3 小结
第8章 移动端实时阴影绘制
8.1 移动端实时阴影实现原理
8.2 技术实现
8.3 透明材质实时阴影处理
8.4 小结
第9章 移动端海水仿真技术
9.1 海水实现的技术原理
9.2 海水网格
9.3 海水算法
9.4 海水的技术实现
9.5 海水浮力的实现
9.6 海面风力实现
9.7 操作界面
9.8 海水的渲染
9.9 海水案例分享
9.10 小结
第10章 MVC架构设计
10.1 MVC代码模块设计
10.2 事件代码实现案例
10.3 窗体基类的实现案例
10.4 窗体子类代码实现案例
10.5 控制类实现案例
10.6 状态类设计实现
10.7 窗体管理类实现案例
10.8 MVC案例分享
10.9 小结
第11章 FSM有限状态机在游戏中的运用
11.1 FSM基类设计
11.2 子类设计
11.3 实体类设计
11.4 技能子类
11.5 游戏案例分享
11.6 小结
第12章 移动端热更新技术实现
12.1 热更新架构设计
12.2 资源打包工具的开发
12.3 C#与Lua接口相互结合
12.4 模块化接口实现
12.5 Lua脚本逻辑编写
12.6 案例实现
12.7 小结
第13章 移动端SHADER技术
13.1 可编程流水线
13.2 顶点着色器
13.3 片段着色器
13.4 Shader案例分享
13.5 小结
第14章 游戏开发经验分享
14.1 关于调试经验分享
14.2 移动端游戏防破解技术
14.3 减小包体的大小
14.4 动态对象资源的优化
14.5 多线程资源下载技术
14.6 小结