游戏编程算法与技巧

作者:【美】Sanjay Madhav

出版社: 电子工业出版社

出版时间: 2016-10

定价: 89

页数: 296

ISBN: 9787121276453

内容简介

    《游戏编程算法与技巧》介绍了大量今天在游戏行业中用到的算法与技术。《游戏编程算法与技巧》是为广大熟悉面向对象编程以及基础数据结构的游戏开发者所设计的。作者采用了一种独立于平台框架的方法来展示开发,包括2D 和3D 图形学、物理、人工智能、摄像机等多个方面的技术。《游戏编程算法与技巧》中内容几乎兼容所有游戏,无论这些游戏采用何种风格、开发语言和框架。

    《游戏编程算法与技巧》的每个概念都是用C#、Java 或C++ 程序员直观明白的伪代码阐述的,并且这些伪代码都已被作者改进和验证过。《游戏编程算法与技巧》中每章末均配有习题或练习,以帮助读者对所学内容进行巩固。《游戏编程算法与技巧》最后,作者详细分析了两款完整的游戏,清楚展现了前面章节讲到的很多技术和算法。

作者简介

    Sanjay Madhav 是南加利福尼亚大学的讲师,在那里他教授了几门与游戏编程相关的课程。而在全职加入南加利福尼亚大学之前,他作为程序员在许多公司工作过,包括Electronic Arts、Neverso 及Pandemic Studios。虽然他在很多系统上都有着丰富的开发经验,但是他最感兴趣的还是游戏机制的开发。他所参与的游戏包括《荣誉勋章:太平洋突袭》(Tony Hawk’s Project 8)、《指环王:征服》(Lord of the Rings: Conquest)和The Saboteur。

    从2008 年开始,Sanjay 在南加利福尼亚大学兼职,当时他还是全职游戏程序员当中的一员。在2009 年年末Pandemic Studios 关闭之后,他决定专注于教越来越重要的游戏程序员。他的主要课程是面向本科生的游戏编程课程,而且已经连续教了10 个学期。

目录

        第1 章游戏编程概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
        游戏编程的发展2
        Atari 时期(1977—1985 年) 2
        NES 和SNES 时期(1985—1995 年) 3
        PS 和PS2 时期(1995—2005 年) 3
        Xbox360、PS3 和Wii 时期(2005—2013 年) 3
        游戏的未来4
        游戏循环4
        传统的游戏循环4
        多线程下的游戏循环6
        时间和游戏8
        真实时间和游戏时间8
        通过处理时间增量来表示游戏逻辑8
        游戏对象10
        游戏对象的类型10
        游戏循环中的游戏对象11
        总结13
        习题13
        相关资料14
        游戏编程的发展14
        游戏循环14
        游戏对象14
        第2 章2D 图形. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
        2D 渲染基础16
        CRT 显示器基础16
        像素缓冲区和垂直同步17
        精灵18
        绘制精灵18
        动画精灵20
        精灵表单23
        滚屏24
        单轴滚屏24
        无限滚屏26
        平行滚屏27
        四向滚屏28
        砖块地图29
        简单的砖块地图29
        斜视等视角砖块地图31
        总结32
        习题32
        相关资料33
        Cocos2D 33
        SDL 33
        第3 章游戏中的线性代数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
        向量35
        加法36
        减法37
        长度、单位向量和正规化38
        标量乘积39
        点乘40
        问题举例:向量反射41
        叉乘43
        问题举例:旋转一个2D 角色45
        线性插值46
        坐标系47
        矩阵48
        加法/减法48
        标量乘法49
        乘法49
        逆矩阵50
        转置50
        用矩阵变换3D 向量51
        总结52
        习题52
        相关资料53
        第4 章3D 图形. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
        基础55
        多边形55
        坐标系55
        模型坐标系56
        世界坐标系56
        视角/摄像机坐标系60
        投影坐标系62
        光照与着色64
        颜色64
        顶点属性65
        光照67
        Phong 光照模型68
        着色70
        可见性71
        再探画家算法72
        深度缓冲区73
        再探世界变换74
        四元数75
        3D 游戏对象的表示77
        总结77
        习题77
        相关资料78
        第5 章游戏输入. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
        输入设备80
        数字输入80
        模拟输入82
        基于事件的输入系统84
        基础事件系统85
        一个更复杂的系统87
        移动设备输入89
        触屏和手势89
        加速器和陀螺仪91
        其他移动设备输入92
        总结92
        习题92
        相关资料93
        第6 章声音. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
        基本声音95
        原始数据95
        声音事件95
        3D 声音98
        监听者和发射者98
        衰减100
        环绕声100
        数字信号处理101
        常见数字信号处理效果102
        区域标记102
        其他声音话题103
        多普勒效应103
        声音遮挡104
        总结105
        目录xiii
        习题106
        参考资料106
        第7 章物理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
        平面、射线和线段108
        平面108
        射线和线段109
        碰撞几何体110
        包围球110
        轴对齐包围盒111
        朝向包围盒111
        胶囊体112
        凸多边形113
        组合碰撞几何体113
        碰撞检测113
        球与球的交叉113
        AABB 与AABB 交叉114
        线段与平面交叉115
        线段与三角片交叉117
        球与平面交叉119
        球形扫掠体检测120
        响应碰撞124
        优化碰撞125
        基于物理的移动126
        线性力学概览127
        可变时间步长带来的问题128
        力的计算128
        欧拉和半隐式欧拉积分129
        Verlet 积分法129
        其他积分方法130
        角力学130
        物理中间件130
        总结131
        习题131
        相关资料131
        第8 章摄像机. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
        摄像机的类型133
        固定摄像机133
        第一人称摄像机134
        跟随摄像机134
        场景切换摄像机135
        透视投影135
        视场136
        宽高比137
        摄像机的实现138
        基础的跟随摄像机138
        弹性跟随摄像机139
        旋转摄像机142
        第一人称摄像机144
        样条摄像机146
        摄像机支持算法149
        摄像机碰撞149
        拣选149
        总结151
        习题151
        相关资料151
        第9 章人工智能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
        “真”AI 与游戏AI 153
        寻路153
        搜索空间的表示154
        可接受的启发式算法156
        贪婪最佳优先算法157
        A* 寻路161
        Dijkstra 算法163
        基于状态的行为164
        AI 的状态机164
        基础的状态机实现165
        状态机设计模式167
        策略和计划168
        策略168
        计划169
        总结170
        习题170
        相关资料172
        通用AI 172
        寻路172
        状态172
        第10 章用户界面. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
        菜单系统174
        菜单栈174
        按钮175
        打字176
        HUD 元素177
        路点箭头177
        准心180
        雷达181
        其他需要考虑的UI 问题186
        支持多套分辨率186
        本地化187
        UI 中间件189
        用户体验189
        总结189
        习题189
        相关资料190
        第11 章脚本语言和数据格式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
        脚本语言192
        折中192
        脚本语言的类型193
        Lua 194
        UnrealScript 195
        可视化脚本系统196
        实现一门脚本语言197
        标记化197
        正则表达式198
        语法分析199
        代码的执行和生成200
        数据格式202
        折中202
        二进制格式203
        INI 203
        XML 203
        JSON 204
        案例学习:《魔兽世界》中的UI Mod 205
        布局和事件205
        行为206
        问题:玩家自动操作206
        问题:UI 兼容性206
        结论207
        总结207
        习题207
        相关资料208
        第12 章网络游戏. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
        协议210
        IP 210
        ICMP 211
        TCP 212
        UDP 214
        网络拓扑215
        服务器/客户端216
        点对点218
        作弊219
        信息作弊219
        游戏状态作弊220
        中间人攻击220
        总结221
        习题221
        相关资料222
        第13 章游戏示例:横向滚屏者(iOS) . . . . . . . . . . . . . . . . . . . . . . . . . . 223
        概览224
        Objective-C 224
        Cocos2D 225
        代码分析226
        AppDelegate 226
        MainMenuLayer 227
        GameplayScene 227
        ScrollingLayer 227
        Ship 228
        Projectile 229
        Enemy 229
        ObjectLayer 229
        练习230
        总结231
        第14 章游戏示例:塔防(PC/Mac). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
        概览233
        C# 233
        XNA 235
        MonoGame 235
        xviii 目录
        代码分析236
        设置236
        单件236
        游戏类237
        游戏状态237
        游戏对象238
        关卡239
        计时器239
        寻路240
        摄像机和投影241
        输入241
        物理242
        本地化242
        图形242
        声音243
        用户界面243
        练习245
        总结246
        附录A 习题答案. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
        附录B 对开发者有用的工具. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
     · · · · · ·     (收起)

Copyright © 游戏人+ All Rights Reserved.