1.本书主要介绍如何基于Rust语言发游戏 2.引导读者制作自己的Flappy Bird,借实例讲解Rust语言的基础知识。 3.引导读者从0到1用Rust实现游戏项目。
售 价:¥
纸质售价:¥94.80购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
版 权
内容提要
致 谢
前 言
第一部分 初识Rust
第1章 Rust及其开发环境
1.1 安装Rust
1.1.1 在Microsoft Windows上安装Rust
1.1.2 在其他操作系统上安装Rust
1.1.3 完成安装
1.1.4 验证安装是否成功
1.1.5 测试Rust能否正常使用
1.1.6 版本更新
1.2 安装并配置开发环境
1.3 用Cargo管理项目
1.3.1 为代码选择一个主目录
1.3.2 用Cargo来开启一个新项目
1.3.3 运行Hello,World
1.3.4 与版本控制系统的集成
1.4 创建第一个Rust程序
1.4.1 Cargo的元数据
1.4.2 Hello,World程序
1.5 用Cargo来构建、检查并运行项目
1.6 修正代码格式
1.7 用Clippy来发现常见错误
1.8 用Cargo进行包管理
1.9 小结
第2章 Rust的第一步
2.1 创建一个新的项目
2.2 捕捉用户输入
2.2.1 提示访客输入姓名
2.2.2 用变量存储姓名
2.2.3 接收键盘输入
2.2.4 读取用户输入
2.2.5 用占位符实现格式化打印
2.2.6 完整的问候程序
2.3 将输入处理逻辑移入函数
2.4 修剪输入数据
2.5 在数组中存储字符串
2.5.1 声明一个数组
2.5.2 在数组中查找元素
2.6 用结构体来组织数据
2.7 用向量来存储数量可变的数据
2.7.1 派生调试信息
2.7.2 用向量代替数组
2.7.3 用break跳出循环
2.7.4 为向量添加新元素
2.8 用枚举体来实现分类
2.8.1 枚举体
2.8.2 使用枚举类型和整数类型的数据成员
2.8.3 将枚举类型赋值给变量
2.8.4 枚举体的匹配
2.9 小结
第3章 构建第一个Rust游戏
3.1 理解游戏循环
3.1.1 什么是bracket-lib以及bracket-terminal
3.1.2 创建一个使用bracket-lib的新项目
3.1.3 Hello,bracket Terminal
3.1.4 存储状态
3.1.5 Codepage 437: 由IBM扩展的ASCII字符集
3.2 创建不同的游戏模态
3.2.1 根据当前模态做出反应
3.2.2 play()函数的桩形式
3.2.3 主菜单
3.2.4 游戏结束菜单
3.2.5 完整的游戏控制流
3.3 添加游戏角色
3.3.1 渲染游戏角色
3.3.2 坠向不可避免的死亡
3.3.3 扇动翅膀
3.3.4 实例化玩家
3.3.5 常量
3.3.6 完善游戏程序的play()函数
3.3.7 扇动翅膀
3.4 创建障碍物并实现计分逻辑
3.4.1 渲染障碍物
3.4.2 一头撞到墙上
3.4.3 记录得分和障碍物的状态
3.4.4 在play()函数中加入障碍物和计分逻辑
3.4.5 将得分显示在游戏结束画面上
3.4.6 在重玩游戏时重置得分和障碍物
3.4.7 Flappy Dragon游戏效果
3.5 小结
第二部分 开发地下城探险类游戏
第4章 设计地下城探险类游戏
4.1 设计文档必备的几个段落标题
4.1.1 为游戏命名
4.1.2 游戏的简要介绍
4.1.3 游戏剧情
4.1.4 基本的游戏流程
4.1.5 最简可行产品
4.1.6 延展目标
4.2 小结
第5章 编写地下城探险类游戏
5.1 将代码划分为模块
5.1.1 crate与模块
5.1.2 新建一个空的地图模块
5.1.3 模块的作用域
5.2 用prelude模块来管理导入项
5.3 存储地下城地图
5.3.1 图块在程序中的表示方法
5.3.2 创建一个空地图
5.3.3 为地图建立索引
5.3.4 渲染地图
5.3.5 使用地图模块的API
5.4 加入探险家
5.4.1 扩展地图的API接口
5.4.2 创建玩家角色的数据结构
5.4.3 渲染玩家角色
5.4.4 移动玩家角色
5.4.5 使用玩家模块的API
5.5 创建地下城
5.5.1 编写地图生成器模块
5.5.2 用石墙把地图填满
5.5.3 开凿房间
5.5.4 开凿走廊
5.5.5 建造地图并放置玩家角色
5.5.6 使用MapBuilder组件的API
5.6 Graphics,Camera,Action[4]
5.6.1 地下城所使用的Programmer Art
5.6.2 图层
5.6.3 制作摄像机
5.6.4 用摄像机来渲染地图
5.6.5 将玩家角色关联到摄像机
5.6.6 清理图层,并关联函数和摄像机
5.7 小结
第6章 创建地下城居民
6.1 名词解释[1]
6.2 用组件编排出实体
6.3 安装并使用Legion
6.3.1 将Legion添加到prelude中
6.3.2 删除一些老代码
6.3.3 创造游戏世界
6.4 编排出玩家角色
6.5 使用系统来实现复杂的逻辑
6.5.1 多个文件组成的模块
6.5.2 理解什么是查询
6.5.3 将处理玩家输入作为一个系统
6.5.4 批量渲染
6.5.5 地图渲染系统
6.5.6 实体渲染系统
6.6 添加怪兽
6.7 碰撞检测
6.8 小结
第7章 与怪兽交替前行
7.1 让怪兽随机游走
7.2 在回合制的游戏中移动Entity
7.2.1 存储回合状态
7.2.2 轮番上阵
7.2.3 拆分调度器
7.2.4 结束玩家的回合
7.3 发送意图消息
7.3.1 实体还可以当作消息来使用
7.3.2 接收消息并进行移动
7.3.3 简化玩家输入处理逻辑
7.3.4 怪兽的移动消息
7.4 小结
第8章 生命值和近身战斗
8.1 为实体赋予生命值
8.2 添加平视显示系统
8.2.1 添加另一个渲染图层
8.2.2 渲染平视显示区
8.2.3 为怪兽添加名字
8.2.4 为怪兽添加名称和生命值
8.2.5 用悬浮提示来区分怪兽
8.2.6 注册各个系统
8.3 实现战斗功能
8.3.1 删除碰撞检测系统
8.3.2 表示攻击意图
8.3.3 玩家主动攻击
8.3.4 创建战斗系统
8.3.5 怪兽的反击
8.3.6 运行各个系统
8.4 将等待作为一种策略
8.5 小结
第9章 胜与负
9.1 创造更聪明的怪兽
9.1.1 标记新的行为
9.1.2 通过trait来支持寻路
9.1.3 映射地图
9.1.4 在地图中导航
9.1.5 具备热成像追踪能力的怪兽
9.1.6 定位玩家角色
9.1.7 迪杰斯特拉图
9.1.8 追杀玩家角色
9.1.9 缩减玩家角色的生命值
9.2 实现游戏结束画面
9.2.1 增加表示游戏结束的回合状态
9.2.2 检测游戏何时结束
9.2.3 显示游戏结束画面
9.3 寻找亚拉的护身符
9.3.1 构建护身符
9.3.2 安放护身符
9.3.3 判断玩家是否胜利
9.3.4 恭贺玩家取得胜利
9.4 小结
第10章 视场
10.1 定义实体的视场
10.1.1 图块的透明度
10.1.2 用HashSet来整理数据
10.1.3 用组件来存储可见图块的集合
10.1.4 计算视场
10.1.5 渲染视场
10.1.6 隐藏实体
10.1.7 更新视场
10.2 限制怪兽的视场
10.3 添加空间记忆
10.3.1 逐步揭示地图
10.3.2 更新地图
10.3.3 渲染记忆中的地图
10.3.4 视场的其他用途
10.4 小结
第11章 更具可玩性的地下城
11.1 创建trait
11.1.1 拆分地图建造器
11.1.2 用MapBuilder来提供地图建造服务
11.1.3 定义代表架构的trait
11.1.4 用参考实现来测试trait
11.1.5 调用空地图的架构
11.1.6 修改房间生成器
11.2 用元胞自动机算法来创建地图
11.2.1 元胞自动机理论
11.2.2 实现元胞自动机
11.2.3 生成一些随机噪声
11.2.4 计算邻居的数量
11.2.5 用迭代消除混乱
11.2.6 放置玩家角色
11.2.7 在没有房间的情况下生成怪兽
11.2.8 建造地图
11.2.9 调用基于元胞自动机的地图架构
11.3 用Drunkard’s Walk算法来创建地图
11.3.1 编写初始代码
11.3.2 用喝醉的矿工开凿洞穴
11.3.3 评估地图建造的完成度
11.3.4 一直挖到地图生成完毕
11.3.5 激活新的地图类型
11.3.6 随机挑选架构
11.4 在地图中使用预制区域
11.4.1 手工打造的地下城
11.4.2 放置金库
11.5 小结
第12章 地图的主题风格
12.1 为地下城引入主题风格
12.1.1 用trait实现地下城主题风格
12.1.2 创建一片森林
12.2 使用主题风格进行渲染
12.2.1 挑选一个主题风格
12.2.2 使用选中的主题风格
12.2.3 根据主题风格来渲染地图
12.3 释放想象力
12.4 小结
第13章 背包和道具
13.1 设计物品
13.1.1 用组件来描述物品
13.1.2 生成药水和地图
13.2 管理背包
13.2.1 捡起物品
13.2.2 显示背包物品
13.2.3 发送物品激活消息
13.2.4 激活物品
13.2.5 应用治疗特效
13.2.6 迭代物品并应用效果
13.2.7 处理疗伤事件
13.2.8 添加到调度器
13.2.9 去掉通过休息恢复生命值
13.3 小结
第14章 更深的地下城
14.1 为地图添加楼梯
14.1.1 生成并渲染楼梯
14.1.2 更新地下城的行走逻辑
14.1.3 生成楼梯并替代护身符
14.2 追踪游戏关卡
14.2.1 关卡切换状态
14.2.2 切换关卡
14.2.3 找到玩家角色
14.2.4 标记需要保留的实体
14.2.5 删除其余的实体
14.2.6 将视场设置为脏
14.2.7 创建新地图
14.2.8 将玩家角色放置在新地图中
14.2.9 创建亚拉的护身符或者楼梯
14.3 在平视显示区中显示当前关卡
14.4 小结
第15章 战斗系统和战利品
15.1 设计数据驱动的地下城
15.1.1 读取地下城的数据
15.1.2 扩展Spawner模块
15.1.3 映射并加载模板
15.1.4 用数据驱动的方式生成实体
15.1.5 新春大扫除
15.2 扩展战斗系统
15.2.1 由武器和爪子造成的伤害
15.2.2 伤害值组件
15.2.3 产生一些伤害
15.2.4 探险家不是八爪鱼
15.3 添加更多宝剑
15.4 小结
第16章 最后的步骤和润色
16.1 打包游戏以进行分发
16.1.1 开启发布模式和链接时优化
16.1.2 分发游戏
16.2 开发属于自己的地下城探险类游戏
16.3 更多内容
16.4 小结
第三部分 其他资源
附录A ASCII/Codepage 437对照表
附录B 简短的游戏设计文档
附录C Rust语法速查表
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜