具体描述
本书出自日本知名游戏公司万代南梦宫的资深开发人员之手,面向初级游戏开发人员,通过10个不同类型的游戏实例,展示了真正的游戏设计和实现过程。本书的重点并不在于讲解Unity的各种功能细节,而在于核心玩法的设计和实现思路。每个实例都从一个idea开始,不断丰富,进而自然而然地推出各种概念,引导读者思考必要的数据结构和编程方法。掌握了这些思路,即便换成另外一种引擎,也可以轻松地开发出同类型的游戏。
作者简介
作者简介:
加藤政树<作者>
就职于日本著名的游戏制造商南梦宫。除产品开发外,还负责公司内部中间件的开发和技术研究、高端项目支持、新游戏的研发等工作。近年来也开始致力于NPR(Non Photorealistic Rendering)的研究。代表作品有Fitness Party、Muscle March。
译者简介:
罗水东<译者>
资深游戏开发工程师。10年软件和游戏开发经验,期间5年时间在日本工作。热爱技术,乐于分享心得。目前主要关注领域为Unity3D游戏开发技术、游戏设计模式。
目录信息
0.1 Unity入门 Concept 2
0.1.1 概要 2
0.1.2 游戏对象 3
0.1.3 组件 5
0.1.4 资源 8
0.1.5 流程 10
0.1.6 场景 11
0.1.7 预设 13
0.1.8 小结 16
0.2 先来复习一下Unity的基础知识吧 Concept 17
0.2.1 脚本一览 17
0.2.2 本章小节 18
0.2.3 本章开发的小游戏 18
0.3 入门教程(上)——创建项目 Tips 18
0.3.1 概要 18
0.3.2 创建新项目 19
0.3.3 创建地面(创建游戏对象) 20
0.3.4 创建场景,保存项目 21
0.3.5 调整场景视图的摄像机 23
0.3.6 创建方块和小球(创建游戏对象并调整坐标) 24
0.3.7 运行游戏 27
0.3.8 摄像机的便捷功能 28
0.3.9 修改游戏对象的名字 28
0.3.10 模拟物理运动(添加Rigidbody组件) 29
0.3.11 让玩家角色跳起来(添加游戏脚本) 30
0.3.12 修改游戏对象的颜色(创建材质) 35
0.3.13 调整游戏画面的尺寸(调整播放器设置) 36
0.3.14 小结 38
0.4 入门教程(下)——让游戏更有趣 Tips 38
0.4.1 概要 38
0.4.2 让小球飞起来(物理运动和速度) 38
0.4.3 创建大量小球(预设游戏对象) 39
0.4.4 整理项目视图 41
0.4.5 发射小球(通过脚本创建游戏对象) 43
0.4.6 删除画面外的小球(通过脚本删除游戏对象) 46
0.4.7 防止玩家角色在空中起跳(发生碰撞时的处理) 48
0.4.8 禁止玩家角色旋转(抑制旋转) 50
0.4.9 让玩家角色不被弹开(设置重量) 51
0.4.10 让小球强烈反弹(设置物理材质) 52
0.4.11 消除“漂浮感”(调整重力大小) 54
0.4.12 调整摄像机的位置 56
0.4.13 修复空中起跳的bug(区分碰撞对象) 57
0.4.14 小结 63
0.5 关于预设 Tips 64
0.5.1 概要 64
0.5.2 改良“小方块”游戏对象 64
0.5.3 预设与对象实例 65
0.5.4 预设和实例的变更 67
0.5.5 小结 70
0.6 C#和JavaScript的对比 Tips 71
0.6.1 概要 71
0.6.2 类的定义 72
0.6.3 变量的定义 72
0.6.4 函数的定义 73
0.6.5 作用域 74
0.6.6 静态函数和静态变量的定义 74
0.6.7 泛型方法的调用 74
0.6.8 Bool类型和字符串类型 75
0.6.9 数组 75
0.6.10 小结 75
第1章 点击动作游戏——怪物 77
1.1 玩法介绍 How to Play 78
1.2 简单的操作和爽快感 Concept 80
1.2.1 脚本一览 80
1.2.2 本章小节 82
1.3 无限滚动的背景 Tips 82
1.3.1 关联文件 82
1.3.2 概要 82
1.3.3 背景组件的显示位置 83
1.3.4 小结 85
1.4 无限滚动的背景的改良 Tips 85
1.4.1 关联文件 85
1.4.2 概要 86
1.4.3 稍作尝试 86
1.4.4 背景组件显示位置的改良 87
1.4.5 小结 89
1.5 怪物出现模式的管理 Tips 89
1.5.1 关联文件 89
1.5.2 概要 89
1.5.3 怪物出现的时间点 90
1.5.4 怪物出现模式的变化 92
1.5.5 小结 96
1.6 武士和怪物的碰撞检测 Tips 96
1.6.1 关联文件 96
1.6.2 概要 96
1.6.3 分别对各个怪物进行碰撞检测时的问题 97
1.6.4 把怪物编成小组 98
1.6.5 小结 100
1.7 得分高低的判定 Tips 100
1.7.1 概要 100
1.7.2 武士的攻击判定 100
1.7.3 判断在多近的距离斩杀 101
1.7.4 小结 104
1.8 使被砍中的怪物向四处飞散 Tips 104
1.8.1 概要 104
1.8.2 想象一下“圆锥体” 104
1.8.3 具体的计算方法 106
1.8.4 小结 108
第2章 拼图游戏——迷你拼图 109
2.1 玩法介绍 How to Play 110
排列拼图碎片,拼出最后的图案! 110
2.2 流畅的拖曳操作 Concept 112
2.2.1 脚本一览 112
2.2.2 本章小节 112
2.3 点住碎片的任意位置拖动 Tips 114
2.3.1 关联文件 114
2.3.2 概要 114
2.3.3 透视变换和逆透视变换 114
2.3.4 被点击处即为光标的位置 114
2.3.5 测试拖曳碎片的中心 117
2.3.6 小结 118
2.4 打乱拼图碎片 Tips 118
2.4.1 关联文件 118
2.4.2 概要 118
2.4.3 设置拼图碎片的坐标为随机数 118
2.4.4 改进策略 119
2.4.5 小结 124
第3章 吃豆游戏——地牢吞噬者 125
3.1 玩法介绍 How to Play 126
3.2 适时进退和逆转的机会 Concept 128
3.2.1 脚本一览 128
3.2.2 本章小节 130
3.3 平滑的网格移动 Tips 130
3.3.1 关联文件 130
3.3.2 概要 130
3.3.3 能够改变方向的时机 131
3.3.4 穿过网格的时机 131
3.3.5 小结 133
3.4 地图数据 Tips 134
3.4.1 关联文件 134
3.4.2 概要 134
3.4.3 文本文件的格式 134
3.4.4 扩展编辑器的功能 139
3.4.5 小结 141
3.5 摄像机变焦功能的运用 Tips 141
3.5.1 关联文件 141
3.5.2 概要 141
3.5.3 调整策略 142
3.5.4 摄像机的视野 143
3.5.5 缓动动画 145
3.5.6 变焦效果的代码实现 146
3.5.7 小结 149
3.6 幽灵的AI Tips 149
3.6.1 关联文件 149
3.6.2 概要 149
3.6.3 跟踪的算法 150
3.6.4 埋伏等待型、包围攻击型和随机型 153
3.6.5 观察幽灵的行动 155
3.6.6 小结 157
第4章 3D声音探索游戏——In the Dark Water 159
4.1 玩法介绍 How to Play 160
4.2 只依靠声音 Concept 162
4.2.1 脚本一览 162
4.2.2 本章小节 164
4.3 仅依靠声音定位 Tips 164
4.3.1 概要 164
4.3.2 3D 声音的特性 164
4.3.3 用于实验的项目 166
4.3.4 小结 167
4.4 3D声音的控制 Tips 167
4.4.1 关联文件 167
4.4.2 概要 167
4.4.3 3D 声音的设置 167
4.4.4 按一定间隔发出声音 168
4.4.5 声音的淡出 169
4.4.6 小结 170
4.5 潜水艇的操纵 Tips 171
4.5.1 关联文件 171
4.5.2 概要 171
4.5.3 操作方法 171
4.5.4 转弯速度的衰减 173
4.5.5 小结 177
4.6 声纳的制作方法 Tips 177
4.6.1 概要 177
4.6.2 Perspective和Ortho 178
4.6.3 Dark Water的声纳摄像机 179
4.6.4 摄像机和对象的层 180
4.6.5 稍作尝试 183
4.6.6 摄像机的视口 184
4.6.7 小结 185
第5章 节奏游戏——摇滚女孩 187
5.1 玩法介绍 How to Play 188
5.2 Band-girl的世界 Concept 189
5.2.1 脚本一览 190
5.2.2 本章小节 190
5.3 显示点击时刻的节拍标记 Tips 192
5.3.1 关联文件 192
5.3.2 概要 192
5.3.3 定位单元 192
5.3.4 标记的显示 195
5.3.5 小结 198
5.4 判断是否配合了音乐点击 Tips 198
5.4.1 关联文件 198
5.4.2 概要 198
5.4.3 得分高低的判断 198
5.4.4 避免重复判断 200
5.4.5 小结 205
5.5 演出数据的管理和执行 Tips 205
5.5.1 关联文件 205
5.5.2 概要 205
5.5.3 事件数据的检索 205
5.5.4 定位单元和执行单元 207
5.5.5 小结 211
5.6 其他调整功能 Tips 211
5.6.1 关联文件 211
5.6.2 概要 211
5.6.3 什么是turn around 212
5.6.4 显示时刻的偏移值 212
5.6.5 定位条 214
5.6.6 显示标记的行号 216
5.6.7 小结 216
第6章 全方位滚动射击游戏——噬星者 217
6.1 玩法介绍 How to Play 218
6.2 功能强大的激光制导 Concept 219
6.2.1 脚本一览 220
6.2.2 本章小节 220
6.3 索敌激光的碰撞检测 Tips 222
6.3.1 关联文件 222
6.3.2 概要 222
6.3.3 索敌激光的碰撞检测 222
6.3.4 碰撞网格的生成方法 224
6.3.5 确认碰撞网格 229
6.3.6 小结 229
6.4 不会重复的锁定 Tips 230
6.4.1 关联文件 230
6.4.2 概要 230
6.4.3 锁定的管理 230
6.4.4 小结 233
6.5 制导激光 Tips 233
6.5.1 关联文件 233
6.5.2 概要 233
6.5.3 根据TrailRenderer生成网格 233
6.5.4 制导激光的移动 234
6.5.5 稍作尝试 238
6.5.6 小结 238
6.6 消息窗口 Tips 239
6.6.1 关联文件 239
6.6.2 概要 239
6.6.3 消息队列和显示缓冲区 239
6.6.4 小结 244
第7章 消除动作解谜游戏——吃月亮 245
7.1 玩法介绍 How to Play 246
7.2 爽快的连锁和有趣的方块移动 Concept 248
7.2.1 脚本一览 248
7.2.2 本章小节 250
7.3 同色方块相邻与否的判断 Tips 250
7.3.1 关联文件 250
7.3.2 概要 250
7.3.3 连结与连锁 250
7.3.4 不停地检测相邻方块 251
7.3.5 递归调用 253
7.3.6 用于测试连结检测的项目 256
7.3.7 防止无限循环检测 257
7.3.8 小结 258
7.4 方块的初始设置 Tips 259
7.4.1 关联文件 259
7.4.2 概要 259
7.4.3 颜色的选择方法 259
7.4.4 随机选取方块的摆放位置 262
7.4.5 小结 264
7.5 动画的父子构造关系 Tips 264
7.5.1 关联文件 264
7.5.2 概要 264
7.5.3 方块的运动 264
7.5.4 动画的父子构造——用于测试的项目 267
7.5.5 《吃月亮》中面板的位置和角度的计算 272
7.5.6 小结 274
7.6 方块的平滑移动 Tips 274
7.6.1 关联文件 274
7.6.2 概要 274
7.6.3 数组的索引和画面上的位置 275
7.6.4 桶列方法 277
7.6.5 小结 280
第8章 跳跃动作游戏——猫跳纸窗 281
8.1 玩法介绍 How to Play 282
8.2 刺激的跳跃 Concept 284
8.2.1 脚本一览 284
8.2.2 本章小节 286
8.3 角色的状态管理 Tips 286
8.3.1 关联文件 286
8.3.2 概要 286
8.3.3 角色的动作 286
8.3.4 状态的迁移 287
8.3.5 状态管理的流程 288
8.3.6 小结 292
8.4 可以控制高度的跳跃 Tips 293
8.4.1 关联文件 293
8.4.2 概要 293
8.4.3 跳跃的物理规律 293
8.4.4 自由控制跳跃高度的操作 294
8.4.5 小结 297
8.5 窗户纸的碰撞检测 Tips 297
8.5.1 关联文件 297
8.5.2 概要 297
8.5.3 “碰撞”的内部实现机制 297
8.5.4 窗户对象 299
8.5.5 矛盾的碰撞结果 299
8.5.6 平滑地穿过格子眼 309
8.5.7 小结 312
第9章 角色扮演游戏——村子里的传说 313
9.1 玩法介绍 How to Play 314
9.2 移动简单,人人都是主人公 Concept 316
9.2.1 脚本一览 316
9.2.2 本章小节 318
9.3 事件和Actor Tips 318
9.3.1 关联文件 318
9.3.2 概要 318
9.3.3 事件 318
9.3.4 事件的数据结构 322
9.3.5 Actor 324
9.3.6 事件的执行 327
9.3.7 试着执行一个事件 330
9.3.8 小结 332
9.4 游戏内参数 Tips 332
9.4.1 关联文件 332
9.4.2 概要 332
9.4.3 游戏内参数 332
9.4.4 小结 336
9.5 事件文件的读取 Tips 336
9.5.1 关联文件 336
9.5.2 概要 336
9.5.3 文件的读取 336
9.5.4 小结 340
9.6 特殊的事件 Tips 341
9.6.1 关联文件 341
9.6.2 概要 341
9.6.3 选项指令 341
9.6.4 宝箱事件 343
9.6.5 进入屋子的事件 345
9.6.6 小结 346
第10章 驾驶游戏——迷踪赛道 347
10.1 玩法介绍 How to Play 348
10.2 自行创建,即作即用 Concept 350
10.2.1 脚本一览 350
10.2.2 本章小节 352
10.2.3 关于Car Tutorial脚本 352
10.3 透视变换和逆透视变换 Tips 352
10.3.1 关联文件 352
10.3.2 概要 352
10.3.3 透视变换 353
10.3.4 逆透视变换 355
10.3.5 小结 357
10.4 多边形网格的生成方法 Tips 358
10.4.1 关联文件 358
10.4.2 概要 358
10.4.3 生成道路的中心线 359
10.4.4 多边形的生成方法 361
10.4.5 生成道路多边形 362
10.4.6 急转弯时的多边形重叠 367
10.4.7 用于测试多边形生成的项目 368
10.4.8 小结 368
10.5 模型的变形 Tips 368
10.5.1 关联文件 368
10.5.2 概要 368
10.5.3 变形后顶点的位置坐标 369
10.5.4 小结 373
10.6 点缀实例 Tips 373
10.6.1 关联文件 373
10.6.2 概要 373
10.6.3 生成基准线 374
10.6.4 把树木设置到基准线上 378
10.6.5 小结 382
后记 383
· · · · · · (收起)
读后感
这本书不是借助例子系统性地串讲Unity的各个知识点,而是引导读者从一个个实例出发,先有游戏创意,再逐个功能点分解、细化、建模,最后落实到代码执行上。从这个角度讲,这本书的定位不是Unity入门,也不是讲纯技术,而是借助Unity讲如何做好gameplay。10个例子涉及多种游戏类...
这本书不是借助例子系统性地串讲Unity的各个知识点,而是引导读者从一个个实例出发,先有游戏创意,再逐个功能点分解、细化、建模,最后落实到代码执行上。从这个角度讲,这本书的定位不是Unity入门,也不是讲纯技术,而是借助Unity讲如何做好gameplay。10个例子涉及多种游戏类...
这本书不是借助例子系统性地串讲Unity的各个知识点,而是引导读者从一个个实例出发,先有游戏创意,再逐个功能点分解、细化、建模,最后落实到代码执行上。从这个角度讲,这本书的定位不是Unity入门,也不是讲纯技术,而是借助Unity讲如何做好gameplay。10个例子涉及多种游戏类...
这本书不是借助例子系统性地串讲Unity的各个知识点,而是引导读者从一个个实例出发,先有游戏创意,再逐个功能点分解、细化、建模,最后落实到代码执行上。从这个角度讲,这本书的定位不是Unity入门,也不是讲纯技术,而是借助Unity讲如何做好gameplay。10个例子涉及多种游戏类...
全书实例讲解相对简单,主要讲解了重点内容,零基础看的话会有点吃力,建议有一定入门基础再来啃这本。随书提供了Unity5.0版本和旧版本资源,Unity5.0代码主要是日语注释,旧版本代码是中文注释,试了下,旧版资源用Unity5.0也能跑起来,新手建议阅读旧版本代码。
用户评价
老实说,这本书的排版和视觉呈现并不算特别亮眼,它更偏向于学术论著的风格,文字量巨大,需要极强的专注力去消化。但这种“不花哨”恰恰体现了它的专业性——它把所有的精力都放在了内容的密度上。我通常阅读技术书籍会伴随着大量的代码调试,但读这本书时,我发现自己停下来思考的时间远远多于敲击键盘的时间。它强迫你去思考“为什么”,而不是仅仅停留在“怎么做”。例如,它对不同设计范式在用户体验上的长期影响进行了深入剖析,这一点在市面上很多只关注短期实现的书籍中是很难见到的。我个人认为,如果你的目标只是快速做出一个能跑起来的Demo,这本书可能显得有些“重型”,但如果你是想打造一个可持续迭代、具有生命力的产品,那么这本书提供的理论基础和前瞻性视角是无可替代的。它更像是一本理论基石,而非昙花一现的速成指南。
我买这本书的初衷其实是为了应对一个棘手的项目,需要快速掌握一些高级别的优化策略和资源管理方法。然而,在阅读过程中,我发现它在叙事结构上处理得极为巧妙。它不是那种枯燥的技术堆砌,而是通过一系列精心设计的案例和对比分析,将复杂的概念平滑地引入读者的视野。尤其是关于流程管理和团队协作的部分,简直是实战的教科书。作者似乎非常了解开发者在实际工作流中会遇到的陷阱和痛点,并提前给出了规避方案。我特别喜欢他用图表和流程图来阐释那些抽象的架构设计,那让复杂的概念瞬间变得具象化、可操作。我甚至开始反思自己过去的项目规划方式,发现很多低效的重复劳动,其实都是因为在最初阶段缺乏这种全局性的指导。这本书的深度足以支撑一个资深开发者去探索边界,而它的清晰度又保证了新人不会望而却步。
我是一个偏向视觉表现的创作者,对底层的逻辑结构总是感到头疼。这本书的出现,极大地改善了我对系统性构建的理解。它并没有把技术拆分得支离破碎,而是始终保持着对整体架构的关注。我尤其欣赏它对工具链集成和跨平台部署的探讨,这些往往是很多入门书籍会忽略的“收尾工作”,但在实际生产环境中却决定了项目的成败。作者的叙述风格非常冷静且客观,几乎没有主观臆断,所有观点都有坚实的基础作为支撑。当我遇到一些关于大型项目模块划分的困惑时,翻阅此书,总能找到一个成熟的、经过实践检验的解决方案模型。它不仅是一本技术参考书,更像是一位经验丰富的前辈,在你迷茫时提供指引,让你在通往专业化的道路上走得更稳健、更少弯路。
好的,这是一篇以读者口吻写的、针对一本名为《Unity游戏设计与实现》的书籍的五段评价,每段风格和内容都力求不同,且未提及该书的具体内容。 --- 这本厚重的书摆在桌上,光是翻开扉页就能感受到那种沉甸甸的知识感。坦白说,我一直以为自己对游戏开发的理解已经够深入了,毕竟也自己摸索过一些入门教程,但这本书彻底颠覆了我的认知。它更像是一本详尽的蓝图,不是手把手教你搭积木,而是告诉你这个世界的运行法则。我最欣赏它的一点是,它没有拘泥于某一个特定的技术细节,而是更侧重于构建一套完整的、系统性的思维框架。当你阅读时,会发现作者的视野非常开阔,他谈论的不仅仅是工具的使用,更是关于如何将一个模糊的创意转化为一个可以被市场接受的产品。那种对行业生态的洞察,对设计哲学层面的探讨,远超出了普通技术手册的范畴。读完前几章,我感觉自己像是从一个工匠的心态,跃升到了一个架构师的角度去审视我的下一个项目。这种思维上的转变,才是这本书对我最大的价值所在。
这本书带给我最大的惊喜,在于它对“工程美学”的强调。在很多教程中,“实现”往往被简化为功能的堆砌,但这本书却用一种近乎诗意的笔触,描述了代码结构、资源组织乃至项目维护中的优雅性。它探讨了如何构建一个既高效又易于维护的代码库,这在面对长期迭代的项目时,显得尤为关键。阅读过程中,我经常会产生一种“原来还可以这样思考”的顿悟感。作者在阐述抽象概念时,总能找到恰到好处的现实类比,让那些晦涩难懂的软件工程原则变得生动起来。我特别留意了其中关于性能瓶颈预测的部分,它提供的分析模型非常严谨,帮助我理清了过去那种凭感觉进行优化的盲目性。这本书的价值不在于教你几行代码能解决眼前的问题,而在于为你装备了一套可以在未来十年都受用的评估工具箱。
用了将近一年时间 算是粗略了解了几种常见的类型 相比于书 随书下载的资源学习参考的价值更大 整个学习的过程中最大的感受就是 日本人的逻辑真的很严谨 清晰 且略有洁癖 书并不难读 但是资源如果想吃透需要相当的经验
非常一般……作者写书的角度有点尴尬,又想吸引更多的人看,又想写的专业一点,有点矛盾,而且这本书的翻译质量感觉堪忧,不像是从业人员写的
非常一般……作者写书的角度有点尴尬,又想吸引更多的人看,又想写的专业一点,有点矛盾,而且这本书的翻译质量感觉堪忧,不像是从业人员写的
用了将近一年时间 算是粗略了解了几种常见的类型 相比于书 随书下载的资源学习参考的价值更大 整个学习的过程中最大的感受就是 日本人的逻辑真的很严谨 清晰 且略有洁癖 书并不难读 但是资源如果想吃透需要相当的经验
非常一般……作者写书的角度有点尴尬,又想吸引更多的人看,又想写的专业一点,有点矛盾,而且这本书的翻译质量感觉堪忧,不像是从业人员写的