《Rust游戏开发实战》赫伯特·沃尔弗森【文字版_PDF电子书_下载】

《Rust游戏开发实战》封面图片
书名:Rust游戏开发实战
作者:赫伯特·沃尔弗森(Herbert Wolverson)
出版社:人民邮电出版社
译者:米明恒
出版日期:2024-5
页数:300
ISBN:9787115626608
0.0
豆瓣短评

前往下载

当当正版

亚马逊购买

全网资源

内容简介:

本书主要介绍基于Rust语言开发游戏的方法,还介绍了适用于Unity、Unreal等游戏引擎的技巧。

本书先设置开发环境,然后引导读者制作自己的Flappy Bird,借实例讲解Rust语言的基础知识。全书引导读者逐步完成一个《地下城爬行者》(Dungeon Crawler)游戏项目,通过实战帮助读者掌握Rust的相关知识,掌握用Bevy开发游戏的方法,以及在不影响程序调试的情况下运行游戏系统,对所开发的游戏进行优化。

本书适合所有对Rust语言感兴趣的读者阅读,也适合从事游戏开发的读者参考。

作者简介:

赫伯特·沃尔弗森(Herbert Wolverson)是一名非常有经验的程序员,主要从事游戏开发工作。他在游戏开发社区非常活跃,为多个开源项目做过贡献。

目  录:

第 一部分 初识Rust

第 1章 Rust及其开发环境 2

1.1 安装Rust 2

1.1.1 在Microsoft Windows上安装Rust 3

1.1.2 在其他操作系统上 安装Rust 3

1.1.3 完成安装 3

1.1.4 验证安装是否成功 4

1.1.5 测试Rust能否正常使用 5

1.1.6 版本更新 5

1.2 安装并配置开发环境 6

1.3 用Cargo管理项目 7

1.3.1 为代码选择一个主目录 7

1.3.2 用Cargo来开启一个新项目 7

1.3.3 运行Hello,World 8

1.3.4 与版本控制系统的集成 8

1.4 创建第 一个Rust程序 9

1.4.1 Cargo的元数据 9

1.4.2 Hello,World程序 10

1.5 用Cargo来构建、检查并运行项目 11

1.6 修正代码格式 12

1.7 用Clippy来发现常见错误 13

1.8 用Cargo进行包管理 15

1.9 小结 16

第 2章 Rust的第 一步 17

2.1 创建一个新的项目 17

2.2 捕捉用户输入 17

2.2.1 提示访客输入姓名 18

2.2.2 用变量存储姓名 18

2.2.3 接收键盘输入 19

2.2.4 读取用户输入 20

2.2.5 用占位符实现格式化打印 21

2.2.6 完整的问候程序 21

2.3 将输入处理逻辑移入函数 22

2.4 修剪输入数据 23

2.5 在数组中存储字符串 24

2.5.1 声明一个数组 25

2.5.2 在数组中查找元素 26

2.6 用结构体来组织数据 27

2.7 用向量来存储数量可变的数据 32

2.7.1 派生调试信息 32

2.7.2 用向量代替数组 33

2.7.3 用break跳出循环 34

2.7.4 为向量添加新元素 34

2.8 用枚举体来实现分类 36

2.8.1 枚举体 36

2.8.2 使用枚举类型和整数类型的数据成员 37

2.8.3 将枚举类型赋值给变量 38

2.8.4 枚举体的匹配 38

2.9 小结 41

第3章 构建第 一个Rust游戏 42

3.1 理解游戏循环 42

3.1.1 什么是bracket-lib以及bracket-terminal 44

3.1.2 创建一个使用bracket-lib的新项目 45

3.1.3 Hello,bracket Terminal 46

3.1.4 存储状态 46

3.1.5 Codepage 437: 由IBM扩展的ASCII字符集 50

3.2 创建不同的游戏模态 50

3.2.1 根据当前模态做出反应 51

3.2.2 play()函数的桩形式 52

3.2.3 主菜单 52

3.2.4 游戏结束菜单 54

3.2.5 完整的游戏控制流 54

3.3 添加游戏角色 55

3.3.1 渲染游戏角色 56

3.3.2 坠向不可避免的死亡 56

3.3.3 扇动翅膀 57

3.3.4 实例化玩家 57

3.3.5 常量 58

3.3.6 完善游戏程序的play()函数 59

3.3.7 扇动翅膀 60

3.4 创建障碍物并实现计分逻辑 60

3.4.1 渲染障碍物 61

3.4.2 一头撞到墙上 62

3.4.3 记录得分和障碍物的状态 63

3.4.4 在play()函数中加入障碍物和计分逻辑 64

3.4.5 将得分显示在游戏结束画面上 64

3.4.6 在重玩游戏时重置得分和障碍物 65

3.4.7 Flappy Dragon游戏效果 65

3.5 小结 65

第二部分 开发地下城探险类游戏

第4章 设计地下城探险类游戏 68

4.1 设计文档**的几个段落标题 68

4.1.1 为游戏命名 68

4.1.2 游戏的简要介绍 68

4.1.3 游戏剧情 69

4.1.4 基本的游戏流程 69

4.1.5 最简可行产品 69

4.1.6 延展目标 70

4.2 小结 70

第5章 编写地下城探险类游戏 72

5.1 将代码划分为模块 72

5.1.1 crate与模块 72

5.1.2 新建一个空的地图模块 73

5.1.3 模块的作用域 74

5.2 用prelude模块来管理导入项 74

5.3 存储地下城地图 76

5.3.1 图块在程序中的表示方法 77

5.3.2 创建一个空地图 77

5.3.3 为地图建立索引 78

5.3.4 渲染地图 79

5.3.5 使用地图模块的API 80

5.4 加入探险家 81

5.4.1 扩展地图的API接口 81

5.4.2 创建玩家角色的数据结构 82

5.4.3 渲染玩家角色 83

5.4.4 移动玩家角色 83

5.4.5 使用玩家模块的API 84

5.5 创建地下城 85

5.5.1 编写地图生成器模块 86

5.5.2 用石墙把地图填满 87

5.5.3 开凿房间 87

5.5.4 开凿走廊 88

5.5.5 建造地图并放置玩家角色 91

5.5.6 使用MapBuilder组件的API 91

5.6 Graphics,Camera,Action 92

5.6.1 地下城所使用的

Programmer Art 92

5.6.2 图层 94

5.6.3 制作摄像机 95

5.6.4 用摄像机来渲染地图 97

5.6.5 将玩家角色关联到

摄像机 98

5.6.6 清理图层,并关联函数和摄像机 98

5.7 小结 99

第6章 创建地下城居民 100

6.1 名词解释 100

6.2 用组件编排出实体 101

6.3 安装并使用Legion 102

6.3.1 将Legion添加到prelude中 103

6.3.2 删除一些老代码 103

6.3.3 创造游戏世界 104

6.4 编排出玩家角色 105

6.5 使用系统来实现复杂的逻辑 107

6.5.1 多个文件组成的模块 108

6.5.2 理解什么是查询 109

6.5.3 将处理玩家输入作为一个系统 111

6.5.4 批量渲染 114

6.5.5 地图渲染系统 115

6.5.6 实体渲染系统 116

6.6 添加怪兽 119

6.7 碰撞检测 121

6.8 小结 123

第7章 与怪兽交替前行 124

7.1 让怪兽随机游走 124

7.2 在回合制的游戏中移动Entity 127

7.2.1 存储回合状态 127

7.2.2 轮番上阵 128

7.2.3 拆分调度器 129

7.2.4 结束玩家的回合 131

7.3 发送意图消息 133

7.3.1 实体还可以当作消息来

使用 133

7.3.2 接收消息并进行移动 133

7.3.3 简化玩家输入处理逻辑 135

7.3.4 怪兽的移动消息 137

7.4 小结 137

第8章 生命值和近身战斗 138

8.1 为实体赋予生命值 138

8.2 添加平视显示系统 139

8.2.1 添加另一个渲染图层 139

8.2.2 渲染平视显示区 141

8.2.3 为怪兽添加名字 143

8.2.4 为怪兽添加名称和生命值 143

8.2.5 用悬浮提示来区分怪兽 145

8.2.6 注册各个系统 147

8.3 实现战斗功能 148

8.3.1 删除碰撞检测系统 148

8.3.2 表示攻击意图 148

8.3.3 玩家主动攻击 149

8.3.4 创建战斗系统 151

8.3.5 怪兽的反击 153

8.3.6 运行各个系统 154

8.4 将等待作为一种策略 155

8.5 小结 157

第9章 胜与负 158

9.1 创造更聪明的怪兽 158

9.1.1 标记新的行为 159

9.1.2 通过trait来支持寻路 160

9.1.3 映射地图 160

9.1.4 在地图中导航 161

9.1.5 具备热成像追踪能力的怪兽 164

9.1.6 定位玩家角色 165

9.1.7 迪杰斯特拉图 165

9.1.8 追杀玩家角色 167

9.1.9 缩减玩家角色的生命值 169

9.2 实现游戏结束画面 170

9.2.1 增加表示游戏结束的回合状态 170

9.2.2 检测游戏何时结束 171

9.2.3 显示游戏结束画面 172

9.3 寻找亚拉的护身符 173

9.3.1 构建护身符 173

9.3.2 安放护身符 174

9.3.3 判断玩家是否胜利 177

9.3.4 恭贺玩家取得胜利 178

9.4 小结 181

第 10章 视场 182

10.1 定义实体的视场 182

10.1.1 图块的透明度 183

10.1.2 用HashSet来整理数据 183

10.1.3 用组件来存储可见图块的集合 184

10.1.4 计算视场 187

10.1.5 渲染视场 189

10.1.6 隐藏实体 191

10.1.7 更新视场 192

10.2 限制怪兽的视场 193

10.3 添加空间记忆 195

10.3.1 逐步揭示地图 195

10.3.2 更新地图 196

10.3.3 渲染记忆中的地图 196

10.3.4 视场的其他用途 198

10.4 小结 199

第 11章 更具可玩性的地下城 200

11.1 创建trait 200

11.1.1 拆分地图建造器 201

11.1.2 用MapBuilder来提供地图 建造服务 201

11.1.3 定义代表架构的trait 202

11.1.4 用参考实现来测试 trait 203

11.1.5 调用空地图的架构 205

11.1.6 修改房间生成器 206

11.2 用元胞自动机算法来创建地图 207

11.2.1 元胞自动机理论 207

11.2.2 实现元胞自动机 208

11.2.3 生成一些随机噪声 209

11.2.4 计算邻居的数量 209

11.2.5 用迭代消除混乱 210

11.2.6 放置玩家角色 211

11.2.7 在没有房间的情况下生成怪兽 213

11.2.8 建造地图 214

11.2.9 调用基于元胞自动机的地图架构 214

11.3 用Drunkard’s Walk算法来创建地图 215

11.3.1 编写初始代码 216

11.3.2 用喝醉的矿工开凿洞穴 216

11.3.3 评估地图建造的完成度 217

11.3.4 一直挖到地图生成完毕 218

11.3.5 激活新的地图类型 220

11.3.6 随机挑选架构 220

11.4 在地图中使用预制区域 221

11.4.1 手工打造的地下城 221

11.4.2 放置金库 222

11.5 小结 226

第 12章 地图的主题风格 227

12.1 为地下城引入主题风格 227

12.1.1 用trait实现地下城主题风格 228

12.1.2 创建一片森林 229

12.2 使用主题风格进行渲染 230

12.2.1 挑选一个主题风格 231

12.2.2 使用选中的主题风格 232

12.2.3 根据主题风格来渲染地图 233

12.3 释放想象力 235

12.4 小结 235

第 13章 背包和道具 236

13.1 设计物品 236

13.1.1 用组件来描述物品 236

13.1.2 生成药水和地图 237

13.2 管理背包 239

13.2.1 捡起物品 240

13.2.2 显示背包物品 241

13.2.3 发送物品激活消息 243

13.2.4 激活物品 245

13.2.5 应用治疗特效 245

13.2.6 迭代物品并应用效果 246

13.2.7 处理疗伤事件 247

13.2.8 添加到调度器 248

13.2.9 去掉通过休息恢复生命值 249

13.3 小结 250

第 14章 更深的地下城 251

14.1 为地图添加楼梯 251

14.1.1 生成并渲染楼梯 251

14.1.2 更新地下城的行走逻辑 252

14.1.3 生成楼梯并替代护身符 253

14.2 追踪游戏关卡 255

14.2.1 关卡切换状态 256

14.2.2 切换关卡 257

14.2.3 找到玩家角色 258

14.2.4 标记需要保留的实体 258

14.2.5 删除其余的实体 259

14.2.6 将视场设置为脏 259

14.2.7 创建新地图 260

14.2.8 将玩家角色放置在新地图中 260

14.2.9 创建亚拉的护身符或者楼梯 260

14.3 在平视显示区中显示当前关卡 261

14.4 小结 262

第 15章 战斗系统和战利品 263

15.1 设计数据驱动的地下城 263

15.1.1 读取地下城的数据 265

15.1.2 扩展Spawner模块 266

15.1.3 映射并加载模板 266

15.1.4 用数据驱动的方式生成实体 268

15.1.5 新春大扫除 272

15.2 扩展战斗系统 274

15.2.1 由武器和爪子造成的伤害 274

15.2.2 伤害值组件 276

15.2.3 产生一些伤害 277

15.2.4 探险家不是八爪鱼 278

15.3 添加更多宝剑 279

15.4 小结 280

第 16章 最后的步骤和润色 281

16.1 打包游戏以进行分发 281

16.1.1 开启发布模式和链接时

优化 281

16.1.2 分发游戏 282

16.2 开发属于自己的地下城探险类游戏 283

16.3 更多内容 283

16.4 小结 284

第三部分 其他资源

附录A ASCII/Codepage 437对照表 286

附录B 简短的游戏设计文档 287

附录C Rust语法速查表 294