[好文分享:www.11jj.com]
更为普适的一本游戏斥地书籍。 [本文来自:www.11jj.com] |
文/龙之心
半个月前,虚幻5引擎的亮相在游戏行业激发了遍及讨论,同时也点燃了一部门人的游戏斥地热情。
对于初学者而言,进修游戏斥地难免会陷入一种无从出手的困局,怎么去竖立起一套常识系统来更好地把握这门名堂?从比来出版的一本书中,葡萄君必然水平上找到了这个参考谜底。
这本书名为《游戏斥地:世嘉新人..教材》,作者是平山尚,曾在世嘉介入《电脑战机》(PS2)、《超级网球大奖赛3》(AC、PS3)的斥地。
世嘉在游戏行业的地位无需赘述,它曾与任天堂、索尼、微软并列四人人用游戏机制造商,是业内知名的游戏斥地公司。本书推出后很快受到世嘉内部新人迎接,并荣获游戏斥地者奥斯卡CEDEC AWARDS 2009著作奖,称得上一本经典书。
2012年夏天,本书译者、拥有15年游戏斥地经验的资深工程师罗水东在东京的书店里发现此书,并被其吸引,不过因为版权的问题,翻译一事被搁浅。
跟着图灵引进该书中文版权,翻译工作正式启动。值得一提的是,为了确保翻译的精准,罗水东将原著一再读了3次。要知道,这本书多达27个章节、676页,能全篇通读下来就已经很不随意了,而在翻译出来的同时,他还将本书的可读性尽或许提高了不少。
《游戏斥地:世嘉新人..教材》一书可分为三部门:2D游戏、3D游戏和通往商业游戏之路,而这种层层铺垫、由浅及深的常识系统也对照适合新人来阅读(文末附目录)。
在2D游戏的起头,作者率先斥地了经典的推箱子游戏。在他看来,这款仅200行代码就能运行的游戏,做起来并不是想象中的小菜一碟,需要考虑的器材是相当多的。
拿“移动”来举例,游戏中不存在玩家和箱子分隔移动的景遇,是以移动处理就是判断玩家进步下摆布哪个倾向移动。而在此之前,首先要判断移动位置是否处于许可局限之内;编写代码时,开首第一个if语句检测要移动的位置是否为空,若是为空则移动到该处。
部门代码展示
当然,这个所谓的空或许有“空白”和“目的地”两种景遇,所以代码会有些复杂。若是将“是否是目的地”的信息存储在别处,因为该数据固定而且不会被改削,所以代码写起来或许会更简练。
接下来则是对代码的进一步改善,如数据容量、处理速度、代码可读性和可拓展性等等。
完成核心模块后,作者下一步起头指导游戏更好地朝商业化成长,从像素到图片素材,再到动画、文本绘制、声音等角度深入斥地,来输出成品。
而在3D游戏部门,你可以学着克己动作游戏《机甲大战》,过程中涵盖角力机运算(3D碰撞处理)、角力机图形学(角色动画)、编程等常识细节。
举一个《机甲大战》自动跟踪的例子。更好的设计理当是玩家可以在导弹即将击中自己的瞬间,经由跳跃或许横向闪避来躲开导弹,而且此时的导弹不许可倏忽掉头袭击,不然就算作弊了。是以,代码只要让导弹航行过程中每帧都朝着仇敌的倾向改变必然角度,让导弹沿着头部的朝向移动,然后逐渐改变它的倾向。
角度的调整经由上下角(绕x轴扭转)与倾向角(绕y轴扭转)实现。绕z轴扭回心味着导弹沿着其自身的轴心扭转,这只起到一个装饰的浸染,所以绘制时再去思虑就可以了。每帧角力出当前仇敌所处的方位,并设置以上两个角度变量使其接近该值。这种体式虽然不完美,但在具备重力的情形近距离作战时并不会有什么问题。
接下来用角度的补间体式使其绕x轴扭转即可。不过,绕x轴的扭转角的局限要把握在-90°至90°,跨越90°意味着导弹的上下两面发生了反转。这一点并不难懂得。我们抬起头一贯往后仰,最终就会看到地面展现在我们的“上方”。任何朝向都可以经由一个-90°到90°的绕x轴的扭转角与一个-180°到180°的绕y轴的扭转角来透露,所以这种设计是没问题的。就好比我们想赏识身后的景色时不必仰头反转,只要扭回身体就可以了。
当把握了3D游戏斥地的底细常识,能够自力地斥地一款产品后,接下来的考验就集中在商业化之前的这段优化过程上,比如若何缩短加载时间?若何预防和处理bug?
以代码为例,书中提到,在项目中要求统一风格的景遇下,若是有轨范员不愿意改变自己的风格,或许就会起辩论。但事实上,每个人都应该接管好的代码规范,做到“不复杂、不繁琐、有需要”。
在本书最后笔者坦言,“虽然写了这样厚厚的一本书,但初入游戏公司时连书的十分之一都没未把握”。在他看来,以前只要有情趣,一个人也能斥地一款游戏,但参考当鄙俗戏规模的手艺复杂水平,一己之力很难斥地像样的游戏了。是以,这样一本教材或许能施展出它的价钱。
其实,进入游戏行业的新人往往存在对专业书籍的诉求,而市面上多数游戏斥地书籍很难兼顾专业性和可读性,又以可读性的缺失最为光鲜。这便导致读者阅读门槛提高,有或许无法僵持看完一本书。
《游戏斥地:世嘉新人..教材》则针对性地解决了这个问题。它以斥地游戏demo、梳理设计常识为轴,考试穿插了不少私货,让读者知道“怎么做”的同时,领略“为什么”这么做,甚至跟经营扯皮的过程也夹带进来,显得更接地气。
另一方面,虽然书名提到“新人..教材”,但受众并不限于新人。Unity User Group定见首脑、UVP价钱专家宣雨松MOMO评价称:
它远远跨越了新人..,甚至适合工作多年的熟手。现在市面上有多少好用的商业游戏引擎,它们将大量事理部门的常识隐藏起来,露出给轨范员的都是简练易用的接口。时间久了多少轨范员虽然能斥地游戏,但已经浑然不知背后的事理常识了。
若是对事理不熟悉,就意味着无法更好地和硬件打交道,无法更好地优化自己的游戏。这本书从无到有一点点揭秘游戏斥地的事理,由浅入深,很随意懂得,切实是一本弗成不读的好书。
《游戏斥地:世嘉新人..教材》开首提到了这样一句话,“本书就像一条从山脚蜿蜒而上的山路,虽漫长但不陡峭,让读者一路赏识景色直至巅峰,不会半途而弃。这也是导致本书页数超级多的原因。这些景色就是当鄙俗戏编程中最常见的内容。”
在浩瀚游戏斥地书籍中,这或许就是本书的最大竞争力。
(今朝该书已在葡萄书房上架,长按下方图片扫码进入小轨范即可购置。迎接各位读者在谈论区留言,葡萄君将随机抽取3位读者赠予一本《游戏斥地:世嘉新人..教材》)
长按此图扫码进入小轨范即可购置
第 1部门 2D 游戏.1
第 1章 第 一个游戏2
1.1 斥地一个益智游戏 .3
1.2 示例代码诠释 7
1.3 添加读取场景数据的功能 16
1.4 C 教室 21
1.5 补充内容:标记位和位运算26
1.6 补充内容:指针和内存 34
1.7 补充内容:引用 41
1.8 本章小结 46
第 2章 从像素起头进修2D 图形处理 .47
2.1 什么是2D 图形处理 48
2.2 预备工作 50
2.3 打印一个点 54
2.4 移植《箱子搬运工》 .55
2.5 补充内容:结束处理 .58
2.6 本章小结 60
第3章 使用图片素材 61
3.1 读取图片文件 .62
3.2 带图片的《箱子搬运工》的示例代码72
3.3 使用透亮通道 .75
3.4 头文件包含关系的组织策略 .82
3.5 补充内容:透亮同化的机能优化 86
3.6 补充内容:加法同化 .88
3.7 本章小结 90
第4章 实时游戏 91
4.1 什么是实时游戏 92
4.2 活动作画 95
4.3 带动画的《箱子搬运工》.96
4.4 获得游戏的帧率 .101
4.5 解决帧率不同 103
4.6 补充内容:凭证帧率改变动态改变游戏运行速度 105
4.7 补充内容:影像撕裂现象 110
4.8 本章小结 .111
第5章 简练的状况迁徙 113
5.1 往类库追加功能 .114
5.2 相对直接的做法 .117
5.3 试着增加状况 119
5.4 代码审查 .122
5.5 示例代码诠释 128
5.6 本章小结 .136
第6章 文本绘制体式 .137
6.1 字体图片 .138
6.2 文本绘制函数 138
6.3 一些改善 .140
6.4 功能验证 .142
6.5 示例代码诠释 143
6.6 留意著作权 147
6.7 示例类库的功能 .147
6.8 本章小结 .148
第7章 动作游戏初体验 149
7.1 用到的类库 150
7.2 斥地《炸弹人》 .151
7.3 示例代码诠释 152
7.4 添加背景浮现 157
7.5 设置移动的对象 .164
7.6 游戏的改善倾向 .169
7.7 本章小结 .170
第8章 2D 平面内的碰撞处理 171
8.1 碰撞检测 .172
8.2 碰撞响应 .174
8.3 发生多个碰撞时的问题 .179
8.4 碰撞响应与把握性 180
8.5 移动的物体互相碰撞 184
8.6 《炸弹人》的碰撞处理 .184
8.7 本章小结 .186
第9章 各类输入设备 .187
9.1 获取输入设备实例 188
9.2 键盘 189
9.3 鼠标 189
9.4 手柄 190
9.5 在《炸弹人》游戏中使用手柄 .191
9.6 本章小结 .193
第 10章 状况迁徙详解 194
10.1 问题定位 195
10.2 使用持续 195
10.3 实际运用 198
10.4 补充内容:简化状况迁徙的代码 .201
10.5 补充内容:跨层级的状况迁徙处理的改善 204
10.6 补充内容:持续的事理 208
10.7 本章小结 213
第 11章 播放声音 .215
11.1 关于音频类库 216
11.2 补充内容:角力机若何播放声音 .218
11.3 补充内容:音高和音量 219
11.4 补充内容:音色 220
11.5 补充内容:声音的叠加 221
11.6 补充内容:do、re、mi 的事理 222
11.7 补充内容:吹奏乐谱 223
11.8 补充内容:读取WAV 音频文件 225
11.9 补充内容:使用Sound 模块来合成声波 .226
11.10 本章小结 226
第 12章 扭转、缩放与平移 227
12.1 扭转 .228
12.2 引入向量和矩阵 241
12.3 行使顶点来实现 246
12.4 缩放 .253
12.5 在缩放的同时进行扭转.255
12.6 矩阵的力量 .256
12.7 补充内容:扭转公式的由来 263
12.8 补充内容:更为实用的扭转处理体式 266
12.9 补充内容:数学中的矩阵 .267
12.10 本章小结 271
第 13章 显卡的力量 272
13.1 关于使用的类库 273
13.2 使用显卡绘制三角形 273
13.3 将图像贴到三角形中 275
13.4 同化模式 278
13.5 扭转、缩放和移动 .278
13.6 移植《炸弹人》 281
13.7 本章小结 284
第 2部门 3D 游戏285
第 14章 绘制立体物体 286
14.1 关于类库 287
14.2 起头建造3D 动作游戏《机甲大战》 .287
14.3 绘制三角形 .289
14.4 按位置前后绘制物体 290
14.5 将远处的物体绘制得小一些 294
14.6 坐标变换 303
14.7 用矩阵透露透视变换 316
14.8 起头建造《机甲大战》 322
14.9 补充内容:Z 缓存的精度问题 335
14.10 本章小结 338
第 15章 类库的封装体式 .340
15.1 整体设计 341
15.2 资源的具体内容 342
15.3 试运行 350
15.4 从文件载入 .352
15.5 补充内容:将类库从游戏等分离 .354
15.6 本章小结 363
第 16章 伪XML 文件的读取 364
16.1 确定文件名堂 365
16.2 竖立前的预备 366
16.3 处理流程 368
16.4 字符串解析 .371
16.5 编写代码 373
16.6 运用 .375
16.7 示例代码诠释 378
16.8 补充内容:生成数据文件382
16.9 本章小结 385
第 17章 编写高机能的代码 386
17.1 算法与时间复杂度 .387
17.2 数据组织底细 390
17.3 吞吐量与延迟 402
17.4 并行处理 404
17.5 内存问题 404
17.6 STL 和数据组织 411
17.7 机能瓶颈理会 416
17.8 补充内容:函数调用的开销 417
17.9 补充内容:高效运算与低效运算 .420
17.10 本章小结 422
第 18章 3D 碰撞处理 .423
18.1 长方体的碰撞处理 .424
18.2 使用浮点数的碰撞检测 427
18.3 三角形和线段的订交检测 .436
18.4 实用性 445
18.5 其他问题 447
18.6 本章小结 448
第 19章 《机甲大战》的设计 450
19.1 状况迁徙 451
19.2 把握 .451
19.3 发射导弹 454
19.4 将功能整合到一路 .457
19.5 前端展现 461
19.6 不足之处 463
19.7 本章小结 464
第 20章 光照 465
20.1 看见物体的过程 466
20.2 光的衰减过程 469
20.3 考试角力 473
20.4 整合到《机甲大战》中.479
20.5 补充内容:机能优化 480
20.6 补充内容:更好的绘制究竟 483
20.7 本章小结 484
第 21章 角色动画 .485
21.1 相对运动 486
21.2 层级Model 类 492
21.3 自动构建树组织 495
21.4 将动画数据化 500
21.5 补间体式 506
21.6 引入到《机甲大战》中.518
21.7 补充内容:联立方程组vs 斜率指定法 519
21.8 补充内容:不足之处 520
21.9 本章小结 523
第3部门 通往商业游戏之路525
第 22章 高效的碰撞检测 .526
22.1 低效的轮回判断体式 527
22.2 机能改善的根本思路 528
22.3 基于排序的体式 531
22.4 依靠瓜分实现的体式 539
22.5 补充内容:改善等分切割法545
22.6 补充内容:空间瓜分的高级花样 .548
22.7 本章小结 552
第 23章 数据加载 .554
23.1 为何加载时间越来越长.555
23.2 文件加载类 .556
23.3 经由合并文件提升机能.562
23.4 经由压缩提升机能 .571
23.5 补充内容:多线程异步处理579
23.6 补充内容:编码手艺 590
23.7 补充内容:用于加密的合并与压缩 591
23.8 本章小结 592
第 24章 float 的用法 593
24.1 位数限制 594
24.2 float 的实现 594
24.3 位数截断带来的误差 596
24.4 误差水平 597
24.5 减小误差的体式 600
24.6 稀奇的数 606
24.7 本章小结 608
第 25章 随书类库提纲 609
25.1 类库中的类 .610
25.2 启动设定 611
25.3 Framework 模块 613
25.4 WindowCreator 模块 614
25.5 FileIO 模块 614
25.6 Base 模块 615
25.7 Math 模块 616
25.8 Threading 模块 618
25.9 Input 模块 .620
25.10 Sound 模块 620
25.11 PseudoXml 模块 621
25.12 Graphics 模块 621
25.13 Scene 模块 628
25.14 抗锯齿处理 630
25.15 将《机甲大战》改用最终版类库实现 631
25.16 X 文件 .633
25.17 本章小结 634
第 26章 bug 的应对体式 .635
26.1 防火与灭火 .636
26.2 bug 的种类 .636
26.3 bug 的预防 .641
26.4 bug 的处理 .654
26.5 《机甲大战》的处理 656
26.6 补充内容:若何检测内存溢出 657
26.7 本章小结 660
第 27章 进阶倾向 .662
27.1 应该进修什么 663
27.2 对象斥地 664
27.3 AI 667
27.4 收集 .667
27.5 shader 668
27.6 参考文献 669
27.7 一些等待的书 672
后记 .675
申谢 .676
介绍阅读
Vtuber|战歌竞技场|动森经济学|原神
后浪|二次元游戏困局|游戏设计书籍
最新的游戏专业书上架啦!点击下方小轨范即可获取