作者 |
豪尔赫·帕拉西奥斯 王寅寅 |
丛书名 |
游戏开发与设计技术丛书 |
出版社 |
机械工业出版社 |
ISBN |
9782101129192 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------Unity人工智能实战(原书第2版)--------------------------- 本书将介绍构建强大的AI的工具,既可以创建更聪明的敌人,改进大 boss,也可以构建自定义的AI引擎。本书旨在成为使用Unity开发人工智能技术的一站式参考。首先,你将快速浏览在游戏环境中使用agent、编程移动以及导航的基本构建模块。接下来,你将通过实例学习如何使用简单的自定义技术改进agent的决策制定和协调机制。然后,你将学习如何模拟agent的视觉和听觉,用于自然和拟人的AI行为,再用图结构改进agent。本书还涵盖了新的导航网格技术,这项技术在Unity 2018中引入,改良了AI和路径查找工具。你还可以用决策制定技术加强AI,运用于简单的诸如井字棋和跳棋的棋类游戏,以及安排agent之间的协作,使它们像整体一样工作。 ---------------------------独立游戏开发:基础、实践与创收(Unity 2D Android篇)--------------------------- 本书将独立游戏开发分为了三个部分。第一部分我们尝试对独立游戏开发进行相关理论分析。第二部分侧重实践,我们首先对游戏进行了简单设计,再使用Unity展示了一款2D Android游戏的具体开发流程,案例专注于游戏层面的设计与编码,不包含晦涩难懂的底层逻辑。第三部分专注于如何使用游戏创造收入,包括使用GooglePlay渠道发布游戏、植入广告、在游戏内创建虚拟商品、实现内购功能等。 本书第一部分适合所有想要了解独立游戏开发的读者,第二、三部分则适合具有一定C#或Java编程语言基础的游戏开发初学者。 |
目录 |
---------------------------Unity人工智能实战(原书第2版)--------------------------- 译者序 前 言 第1章 行为——智能移动 1 1.1 简介 1 1.2 创建行为模板 2 1.3 追赶和逃跑 4 1.4 为物理引擎调整agent 6 1.5 到达和离开 8 1.6 朝向物体 10 1.7 徘徊 12 1.8 按路径移动 14 1.9 避开agent 18 1.10 避开墙体 20 1.11 通过权重混合多个行为 21 1.12 通过优先级混合多个行为 22 1.13 射击抛射体 24 1.14 预测抛射体的着地点 26 1.15 锁定抛射体 27 1.16 创建跳跃系统 28 第2章 导航 32 2.1 简介 32 2.2 用网格表示世界 33 2.3 用可视点法表示世界 41 2.4 用自制的导航网格表示世界 44 2.5 用深度优先搜索在迷宫中找到出路 47 2.6 用广度优先搜索在网格中找到最短路径 49 2.7 用迪杰斯特拉算法找到最短路径 50 2.8 用A*找到最优路径 53 2.9 改进A*算法的内存占用:IDA* 56 2.10 在多个帧中规划导航:时间片搜索 58 2.11 使路径变得平滑 60 第3章 决策制定 62 3.1 简介 62 3.2 通过决策树做选择 62 3.3 实现有限状态机 65 3.4 改进有限状态机:分层的有限状态机 67 3.5 实现行为树 69 3.6 使用模糊逻辑 71 3.7 用面向目标的行为制定决策 74 3.8 实现黑板架构 76 3.9 尝试Unity的动画状态机 78 第4章 新的NavMesh API 84 4.1 简介 84 4.2 初始化NavMesh开发组件 84 4.3 创建和管理NavMesh,用于多种类型的agent 86 4.4 在运行时创建和更新NavMesh数据 89 4.5 控制NavMesh实例的生命周期 90 4.6 连接多个NavMesh实例 92 4.7 创建动态的带有障碍物的NavMesh 93 4.8 用NavMesh API实现某些行为 94 第5章 协作和战术 97 5.1 简介 97 5.2 管理队形 98 5.3 扩展A*算法用于协作:A* mbush 102 5.4 用高度分析路径点 105 5.5 用覆盖性和可见性分析路径点 106 5.6 自动化创建路径点 107 5.7 将路径点作为示例用于决策制定 110 5.8 实现势力图 111 5.9 用淹没图改进势力图 114 5.10 用卷积滤波器改进势力图 118 5.11 构建战斗循环 120 第6章 agent感知 128 6.1 简介 128 6.2 基于碰撞系统的视觉函数 128 6.3 基于碰撞系统的听觉函数 130 6.4 基于碰撞系统的嗅觉函数 133 6.5 基于图的视觉函数 136 6.6 基于图的听觉函数 138 6.7 基于图的嗅觉函数 140 6.8 在潜行游戏中创建感知 141 第7章 棋类游戏和应用的搜索AI 148 7.1 简介 148 7.2 使用博弈树类 148 7.3 实现Minimax算法 150 7.4 实现Negamax算法 152 7.5 实现AB Negamax算法 154 7.6 实现Negascout算法 156 7.7 实现井字游戏对手 158 7.8 实现跳棋游戏对手 161 7.9 用UCB1实现石头剪刀布AI 171 7.10 实现无悔匹配算法 175 第8章 机器学习 178 8.1 简介 178 8.2 使用N元语法预测器预测行动 178 8.3 改进预测器:分层的N元语法 181 8.4 学习使用朴素贝叶斯分类器 182 8.5 实现强化学习 184 8.6 实现人工神经网络 188 第9章 程序化内容生成 192 9.1 简介 192 9.2 用深度优先搜索创建迷宫 192 9.3 为地下城和群岛实现可构造算法 195 9.4 生成风景 199 9.5 使用N元语法生成内容 201 9.6 用进化算法生成敌人 204 第10章 其他 209 10.1 简介 209 10.2 创建和管理可编写脚本的对象 209 10.3 更好地处理随机数 211 10.4 构建空气曲棍球游戏对手 213 10.5 实现竞速游戏架构 218 10.6 使用橡皮筋系统管理竞速难度 220 ---------------------------独立游戏开发:基础、实践与创收(Unity 2D Android篇)--------------------------- 前言 第1篇 独立游戏开发基础 第1章 基本认识 2 1.1 何为独立游戏 2 1.2 独立游戏开发?开发独立游戏?独立开发游戏? 3 1.3 独立游戏开发者 5 1.4 矛盾碰撞的产物 6 第2章 条件因素 9 2.1 个体条件 9 2.1.1 叛逆 9 2.1.2 边行动边计划 10 2.1.3 良好的身心素质 11 2.2 观念条件 12 2.2.1 不是“电子毒品” 12 2.2.2 伟大的“艺术品” 14 2.2.3 不变的原始目的 15 2.2.4 不盲目排斥商业因素 16 2.2.5 高尚的品质 17 2.3 资金条件 18 2.4 环境条件 19 2.5 知识条件 21 2.5.1 编程 21 2.5.2 美术 21 2.5.3 音乐 22 2.5.4 文学 22 2.5.5 财会 22 2.5.6 商业 22 第3章 团队与个人 23 3.1 团队与个人的关系 23 3.1.1 成员关系 23 3.1.2 委托关系 24 3.1.3 授权关系 25 3.2 团队开发的理由 25 3.2.1 提高生产力 25 3.2.2 利于成长 26 3.2.3 符合社会性本质 27 3.3 独自开发的理由 27 3.3.1 掌握主动权 28 3.3.2 学习目的 29 3.3.3 无合适协作对象 29 3.4 开发者状态 30 3.4.1 全职雇员状态 31 3.4.2 兼职者状态 32 3.4.3 自由职业者状态 32 3.4.4 创业者状态 33 第4章 矛盾双方及融合 34 4.1 独立精神 34 4.1.1 广泛性 35 4.1.2 主观性 36 4.1.3 模糊性 37 4.2 商业力量 39 4.2.1 投资与融资 39 4.2.2 采购与营销 41 4.3 融合 44 4.3.1 融合的条件 45 4.3.2 融合的目的 48 4.4 创收途径 49 4.4.1 一次性销售 49 4.4.2 第三方广告收入 50 4.4.3 虚拟商品销售 50 4.4.4 融资 50 第5章 Unity及相关工具 51 5.1 Unity简介 51 5.1.1 引擎特点 51 5.1.2 下载安装及项目的建立 53 5.1.3 操作界面 55 5.1.4 项目构建与导出 63 5.2 Visual Studio简介 65 5.3 Git与GitHub 67 5.3.1 Git简介 67 5.3.2 GitHub简介 69 5.4 Android Studio简介 72 5.5 其他推荐工具 74 5.5.1 GIMP简介 74 5.5.2 Aseprite简介 75 5.5.3 Blender简介 75 5.5.4 LMMS简介 75 5.5.5 Audacity简介 75 5.5.6 XMind简介 75 5.5.7 Visual Paradigm简介 76 第2篇 独立游戏开发实践 第6章 简单设计 78 6.1 故事 78 6.2 玩法 80 6.3 操作界面 82 6.4 登场对象 83 6.4.1 主角 83 6.4.2 纸飞机 84 6.4.3 金币 84 6.4.4 障碍 84 6.4.5 敌人 85 6.4.6 复活猫 86 6.5 主题 86 第7章 游戏雏形 87 7.1 临时主角 87 7.1.1 创建主角游戏对象 87 7.1.2 图像资源导入设置 89 7.1.3 资源导入设置脚本 90 7.2 移动 91 7.2.1 基于Transform的移动 91 7.2.2 移动改进 92 7.3 碰撞 94 7.3.1 刚体与碰撞器组件 94 7.3.2 碰撞逻辑 96 7.4 物理系统 97 7.4.1 游戏对象调整 98 7.4.2 渲染顺序修正 99 7.4.3 基于物理系统的移动 100 7.4.4 基于物理系统的跳跃与碰撞 101 第8章 主角 104 8.1 行为动画 104 8.1.1 Spritesheet切片 104 8.1.2 首次创建动画 105 8.1.3 后续动画的创建 106 8.2 动画状态机 107 8.2.1 动画控制器窗口 108 8.2.2 状态转换关系 108 8.2.3 脚本逻辑 110 8.2.4 Bug修复 118 8.3 主角、气体与纸飞机 119 8.3.1 主角与气体 119 8.3.2 纸飞机与气体 124 8.3.3 主角与纸飞机 131 第9章 背景画面 134 9.1 近景画面 134 9.1.1 Tilemap功能 134 9.1.2 创建Tile资源 136 9.1.3 铺设Tile 137 9.2 远景画面 138 9.3 屏幕适配 139 9.4 视差效果 141 9.4.1 多重摄像机 141 9.4.2 视差逻辑 143 第10章 敌人及障碍 145 10.1 路障 145 10.1.1 Spritesheet切片 145 10.1.2 路障调整 146 10.2 恶犬 147 10.2.1 动画与游戏对象 147 10.2.2 脚本逻辑 148 10.3 金币炸弹 152 10.3.1 动画与游戏对象 152 10.3.2 脚本逻辑 153 10.4 小鸟 154 10.4.1 PlayerDistanceChecker脚本修改 155 10.4.2 Bird脚本逻辑 156 10.5 美女 158 10.5.1 动画与游戏对象 158 10.5.2 脚本逻辑 159 10.6 汽车 163 10.6.1 动画与游戏对象 163 10.6.2 脚本逻辑 164 10.7 摔倒陷阱 166 10.8 小屁孩儿 168 10.8.1 动画与游戏对象 168 10.8.2 脚本逻辑 169 10.9 UFO 172 10.10 巨人 175 10.10.1 动画与游戏对象 175 10.10.2 脚本逻辑 177 10.11 蝗虫 180 10.11.1 预制件 180 10.11.2 脚本逻辑 181 10.12 恶魔猫 183 10.12.1 动画与游戏对象 183 10.12.2 脚本逻辑 184 第11章 其他登场对象 189 11.1 金币 189 11.1.1 预制件 189 11.1.2 脚本逻辑 189 11.2 复活猫 191 11.2.1 动画与游戏对象 191 11.2.2 脚本逻辑 191 11.2.3 Bug修复 195 11.3 其他主角 197 11.3.1 动画与游戏对象 198 11.3.2 继承PlayerController类 200 11.3.3 继承AirCollisionChecker类 202 11.3.4 继承InhaleController类 203 11.3.5 PlayerSwitcher脚本逻辑 204 第12章 操作界面 208 12.1 跳跃与吹气按钮 208 12.1.1 跳跃按钮 208 12.1.2 吹气按钮 213 12.2 能量条 217 12.2.1 游戏对象 217 12.2.2 脚本逻辑 218 12.3 数据显示区域 220 12.3.1 游戏对象 220 12.3.2 脚本逻辑 222 12.4 暂停退出按钮 227 12.4.1 游戏对象 227 12.4.2 脚本逻辑 230 12.4.3 死亡弹出按钮 232 12.5 游戏开始界面 235 12.5.1 开始与关闭游戏按钮 235 12.5.2 主角切换开关 237 第13章 游戏收尾 241 13.1 3秒倒计时 241 13.1.1 游戏对象 241 13.1.2 脚本逻辑 242 13.2 位置提示线 245 13.2.1 游戏对象 245 13.2.2 脚本逻辑 246 13.3 坏结局与通关 247 13.3.1 心爱的姑娘 247 13.3.2 抵达终点 249 13.3.3 游戏通关界面 253 13.4 音乐及音效 257 13.4.1 游戏音乐 257 13.4.2 游戏音效 259 第3篇 独立游戏开发创收 第14章 游戏发布 272 14.1 运行在Android平台上 272 14.1.1 PlayerController脚本修改 272 14.1.2 手机开发者模式 274 14.1.3 构建与运行 275 14.2 GooglePlay渠道 277 14.2.1 启动PLAY管理中心 278 14.2.2 创建应用并设置版本 280 14.2.3 完善其他条目 282 14.2.4 发布游戏 284 第15章 AdMob广告 289 15.1 AdMob简介 289 15.2 AdMob管理中心 289 15.2.1 进入AdMob管理中心 289 15.2.2 添加应用 291 15.2.3 创建广告单元 292 15.3 复活及广告展示逻辑 296 15.4 导出游戏工程 300 15.5 接入AdMob广告SDK 301 15.5.1 导入广告SDK 301 15.5.2 更新AndroidManifests.xml文件 303 15.5.3 初始化广告SDK 304 15.6 植入广告 306 第16章 GooglePlay内购 309 16.1 复活宝石 309 16.1.1 游戏对象及按钮 309 16.1.2 脚本逻辑 310 16.2 内购逻辑 314 16.2.1 更新AndroidManifests.xml文件 315 16.2.2 导入GooglePlay结算SDK 315 16.2.3 GooglePlay结算服务 316 16.3 发布新版本 319 16.3.1 构建新版本Apk 319 16.3.2 上传新版本Apk 321 16.4 应用内商品 323 16.4.1 设置商家账号 323 16.4.2 创建受管理的商品 324 |