Java游戏编程

2004年科学出版社出版的图书
Java游戏编程，科学出版社2004年6月出版，作者是David BRACKEEN。
内容简介
本书面向游戏开发人员及广大游戏编程爱好者，同时，也是大专院校相关专业师生的有力参考。本书配套光盘内容为书中实例源代码。Java在游戏编程方面的功能强大，本书将带领大家一步一步学习编写JAVA游戏，最终制做出自己满意的作品。
图书目录
第一部分 Java游戏基础
第1章 Java线程 1. 1 什么是线程 1. 2 在Java中生成与运行线程 1. 2. 1 扩展Thread类 1. 2. 2 实现Runnable接口 1. 2. 3 使用匿名内类 1. 2. 4 等待线程完成 1. 2. 5 休眠线程 1. 3 同步 1. 3. 1 为什么要同步 1. 3. 2 如何同步 1. 3. 3 同步是什么 1. 3. 4 不同步是什么 1. 3. 5 避免死锁1. 4 使用wait 与notify 1. 5 Java事件模型 1. 6 何时使用线程 1. 7 何时不使用线程 1. 8线程池1. 9 小结
第2章 二维图形与动画 2. 1 全屏图形 2. 1. 1 屏幕布局 2. 1. 2 像素颜色与位深度2. 1. 3 刷新率 2. 1. 4 将显示切换到全屏方式 2. 1. 5 抗齿边 2. 1. 6 选用显示方式 2. 2 图像 2. 2. 1 透明度 2. 2. 2 文件格式2. 2. 3 读取图像 2. 2. 4硬件加速图像 2. 2. 5 图形绘制基准程序2. 2. 6 动画 2. 2. 7 活动绘制 2. 2. 8 动画循环 2. 3 避免闪烁与裂开 2. 3. 1 双缓存 2. 3. 2 翻页2. 3. 3 监视刷新与裂开 2. 3. 4 BufferStrategy类 2. 3. 5 生成屏幕管理器 2. 3. 6 幽灵 2. 4 简单效果 2. 5 小结
第3章交互性与用户界面 3. 1 AWT事件模型 3. 2 键盘输入 3. 3 鼠标输入 3. 4 通过鼠标移动的观看模式 3. 5 创建输入管理器 3. 6 使用输入管理器 3. 6. 1 暂停游戏 3. 6. 2 增加重力 3. 7 设计直观用户界面 3. 8 使用Swing组件 3. 8. 1 Swing基础 3. 8. 2 在全屏方式中使用Swing 3. 9 创建简单菜单 3. 10 游戏者配置键盘 3. 11 小结
第4章 声效与音乐 4. 1 声音基础 4. 2 JavaSoundAPl 4. 2. 1 打开声音文件 4. 2. 2 使用Line 4. 3 播放声音 4. 4 创建实时声音过滤体系结构 4. 5 创建实时回响过滤 4. 6 仿真三维声音 4. 6. 1 生成三维过滤器的思路 4. 6. 2 实现三维过滤器 4. 6. 4 测试三维过滤器 4. 7 创建声音管理器 4. 7. 1 Sound类 4. 7. 2 SoundManager类 4. 7. 3 线程局部变量4. 8 播放音乐 4. 8. 1 播放光盘声频 4. 8. 2 播放MP3与OggVorbis 4. 8. 3 播放MIDI音乐4. 8. 4 生成适配音乐 4. 9 小结
第5章 创建二维平台游戏 5. 1 生成基于地砖的地图 5. 1. 1 实现Tile地图 5. 1. 2 读取Tile地图 5. 1. 3 绘制Tile地图 5. 1. 4 绘制幽灵 5. 1. 5 视差滚动 5. 1. 6 充电器 5. 1. 7 简单坏人 5. 2 碰撞探测 5. 2. 1 探测碰撞 5. 2. 2 处理碰撞 5. 2. 3 幽灵碰撞 5. 3 完成与加速 5. 4 生成可执行的.jar文件 5. 5 扩展游戏 5. 6 小结
第6章 多人游戏 6. 1 Java I/O库的变革 6. 1. 1 JDK 1. 4NIO库的概述 6. 1. 2 信道 6. 1. 3 缓存 6. 1. 4 选择器与SelectionKeys 6. 2 基本多方游戏应用程序6. 2. 1 服务器端 6. 2. 2 建立与运行服务器 6. 2. 3 客户端6. 2. 4 建立与运行客户机 6. 3 多方游戏服务器框架 6. 3. 1 设计目标与战术 6. 3. 2 设计 6. 3. 3 共用类与接口 6. 3. 4 服务器实现 6. 3. 5 客户机 6. 4 RPS游戏 石头. 布. 剪刀 6. 4. 1 类 6. 4. 2 运行RPS游戏 6. 5 建立框架 6. 5. 1 客户机GUI 6. 5. 2 持久性 6. 5. 3 伙伴名单. 门厅与闲聊 6. 6服务器管理6. 6. 1 登记 6. 6. 2 启动/关闭 6. 6. 3 服务器管理控制台6. 6. 4 游戏监查 6. 7 高级课题 6. 7. 1 切断与重接 6. 7. 2 HTTP隧道 6. 7. 3 量化测试 6. 7. 4 Modem连接 6. 7. 5 性能剖析与统计 6. 7. 6 性能调整 6. 8 小结
第二部分 三维图形与高级技术
第7章 三维图形 7. 1 三维绘制的类型 7. 2 回顾曾经学过的数学 7. 2. 1 三角学和直角三角形7. 2. 2 向量数学 7. 3 3D的基础 7. 4 3D的数学 7. 5 多边形 7. 6三维变换7. 6. 1 旋转 7. 6. 2 包装旋转和平移变换 7. 6. 3 采用变换 7. 6. 4 旋转顺序 7. 7 3D的简单管道 7. 8 镜头移动 7. 9 实体和背面删除 7. 9. 1点积7. 9. 2 交积 7. 9. 3 再谈点积和交积 7. 10 扫描转换多边形 7. 11 三维剪取 7. 12 最后绘制管道 7. 13 小结
第8章 纹理贴图与照明 8. 1 透视正确纹理贴图的基础 8. 2 简单纹理贴图器 8. 3 优化纹理贴图 8. 3. 1 纹理的存储格式 8. 3. 2 原始优化 8. 3. 3 内联方法 8. 3. 4 快速纹理贴图演示程序 8. 4 简单灯光 8. 4. 1 扩散反射 8. 4. 2 环境光 8. 4. 3 光源强度 8. 4. 4 距离减弱 8. 4. 5 实现点光源 8. 5 实现纹理照明 8. 6 使用阴影图的高级照明 8. 6. 1 求出边界矩形 8. 6. 2 采用色档图 8. 6. 3 建立色档图 8. 6. 4 建立表面 8. 6. 5 缓存表面 8. 6. 6 阴影表面演示程序 8. 7 其他概念 8. 7. 1 深度提示 8. 7. 2 伪阴影 8. 7. 3MIP贴图8. 7. 4双线性插值8. 7. 5三线性插值 8. 7. 6法线图与深度 8. 7. 7 其他类型的光 8. 8 小结
第9章 三维对象 9. 1 表面消隐 9. 1. 1 油画算法 9. 1. 2 反油画算法 9. 1. 3 Z缓存 9. 1. 4 使用1/Z的Z缓存 9. 1. 5 计算Z深度 9. 2 三维动画 9. 2. 1 空间运动 9. 2. 2 角度运动 9. 3 多边形组 9. 4 从OBJ文件装入多边形组 9. 4. 1 0BJ文件格式 9. 4. 2 MTL文件格式 9. 5 游戏实体 9. 6 管理游戏实体 9. 7 综合起来 9. 8 改进 9. 9 小结
第10章 用BSP树管理三维视景 10. 1 BSP树简介 10. 2 二叉树基础 10. 3 一维BSP树 10. 4 二维BSP树 10. 4. 1 建立BSP树 10. 4. 2 BSP树遍历实例 10. 5 实现二维BSP树 10. 5. 1 BSPLine 10. 5. 2 确定点相对于直线的边 10. 5. 3 BSP多边形 10. 5. 4 遍历BSP树 10. 5. 5中序遍历10. 5. 6 由前到后遍历 10. 5. 7 树的建立 10. 5. 8 两条线求交 10. 5. 9 用直线剪取多边形 10. 5. 10 删除T形接头 10. 5. 11 测试BSP树 10. 6 从前到后画多边形 10. 7
第一个BSP树例子 10. 8 在视景中画实体 10. 9 从文中装入贴图 10. 10 综合起来 10. 11 改进 10. 12 小结
第11章 碰撞探测 11. 1 碰撞基础 11. 2 实体间碰撞 11. 2. 1 减少测试 11. 2. 2 边框球 11. 2. 3 边框圆柱 11. 2. 4 离散时间问题 11. 3 实体与世界碰撞 11. 3. 1 测试地板的边框 11. 3. 2 寻找特定位置的BSP叶 11. 3. 3 实现地板和天花板高度测试 11. 3. 4 测试墙的边框 11. 3. 5 BSP树的线段交点 11. 3. 6 角问题 11. 3. 7 实现实体/世界碰撞探测 11. 4 基本碰撞探测演示程序 11. 5 滑动与碰撞处理 11. 5. 1 实体间滑动 11. 5. 2 实体沿墙的滑动 11. 5. 3 重力与爬楼梯 实体沿地 面滑动 11. 5. 4 实现跳动 11. 6 碰撞探测与滑动演示程序 11. 7 改进 11. 8 小结
第12章 路径搜索 12. 1 路径寻找基础 12. 2 初步路径寻找方法 12. 3 A*算法基础 12. 4 采用A*算法12. 5 BSP树与A*算法 12. 5. 1 门户 12. 5. 2 实现门户 12. 6 一般性路径寻找 12. 7 建立PathBot 12. 8 改进A*搜索 12. 9 小结
第13章 人工智能 13. 1 人工智能基础13. 2 减少Bot的神力 13. 2. 1 视觉 13. 2. 2 听觉 13. 3状态机与响应 13. 4 概率机 13. 5 决策 13. 6 模式 13. 6. 1 躲避 13. 6. 2 攻击 13. 6. 3 跑开 13. 6. 4 瞄准 13. 6. 5 射击 13. 7 实体派生 13. 8 综合起来 13. 8. 1 大脑 13. 8. 2 健康与死亡 13. 9 进化 13. 9. 1 再生 13. 9. 2 进化Bot 13. 9. 3 演示改进 13. 10 进化 13. 11 小结
第14章 游戏脚本14. 1 关于脚本 14. 2 实现接触与释放通知 14. 3 游戏实体监听器 14. 4 脚本 14. 4. 1 设计脚本 14. 4. 2 嵌入BeanShell解释器14. 5 延迟事件 14. 6 综合起来 14. 7 改进 14. 8 小结
第15章 保存游戏 15. 1 游戏保存基础 15. 2 对游戏状态保存使用Java序列化API 15. 2. 1 序列化简介 15. 2. 2 序列化基础 15. 2. 3 序列化规则 15. 2. 4 序列化问题 15. 2. 5 覆盖缺省行为 15. 3 生成游戏屏幕图形 15. 3. 1 生成屏幕略图图形 15. 3. 2 保存图形 15. 4 将游戏保存到正确目的地 15. 5 小结
第三部分 调整与完成游戏
第16章 优化技术 16. 1 优化规则 16. 2 剖析 16. 2. 1 基准测试 16. 2. 2 使用HotSpot剖析器 16. 3 HotSpot 16. 3. 1 Java特定优化 16. 3. 2 死亡代码消除 16. 3. 3 循环不变项提升 16. 3. 4 公共子表达式消除 16. 3. 5 常量传递 16. 3. 6 内联方法 16. 4 优化技巧 16. 4. 1 算法 16. 4. 2 移位 16. 4. 3 求模 16. 4. 4 乘法 16. 4. 5 指数 16. 4. 6 更多循环不变项提升 16. 4. 7查找表16. 4. 8 定点算术 16. 4. 9 异常 16. 4. 10 输入/输出 16. 4. 11 内存贴图文件 16. 5 内存使用与回收 16. 5. 1 Java堆与内存回收 16. 5. 2 监视内存回收 16. 5. 3 监视内存使用 16. 5. 4 调整堆 16. 5. 5 调用内存回收单元 16. 5. 6 减少对象生成 16. 5. 7 对象复用 16. 5. 8对象池16. 6 感觉性能 16. 7 小结
第17章 生成游戏图形与声音 17. 1 选择外观 17. 1. 1 寻找灵感 17. 1. 2 保持一致 17. 2 取得自由版权游戏媒体 17. 3 与艺术家和声效工程师合作 17. 4 工具 17. 5 生成声音 17. 6 生成纹理与幽灵 17. 6. 1 图形文件格式 17. 6. 2 生成无缝纹理 17. 6. 3 生成替换纹理 17. 6. 4 生成过渡纹理 17. 6. 5 生成多层纹理 17. 7 生成漂亮屏幕与HUD图形 17. 8 生成UI图形 17. 9 生成字体17. 10 小结
第18章 游戏设计与最后10%
18. 1 最后10% 18. 1. 1 效果
18. 1. 2 游戏状态机
18. 2 游戏设计要素
18. 2. 1 环境
18. 2. 2 故事要素
18. 2. 3 玩游戏
18. 2. 4 告诉用户怎么玩
18. 3 生成贴图编辑器
18. 4 调试
18. 4. 1 调试Java2D问题
18. 4. 2 日志
18. 5 保护代码
18. 6 游戏部署
18. 7 JavaWebStart游戏部署
18. 7. 1 从jar文件取得资源
18. 7. 2 签名jar文件
18. 7. 3 生成JNLP文件
18. 7. 4 设置Web服务器
18. 8 自然编译游戏部署
18. 9 更新与补丁
18. 10 带宽问题
18. 11 反馈与Beta测试
18. 12 赚钱
18. 13 综合起来
18. 14 小结
第19章 未来
19. 1 Java的演变
19. 1. 1 Java社团
19. 1. 2 缺陷天堂 BugParade
19. 2 Java 1. 5 Tiger
19. 2. 1 一般 JSRl4
19. 2. 2 枚举 JSR201
19. 2. 3 静态导入口 JR201
19. 2. 4 改进for循环JSR201
19. 2. 5编译器API JSRl99
19. 2. 6 网络传输格式 JSR200
19. 2. 7 共享虚拟机JSR121
19. 3Java平台需要什么
19. 3. 1 更多鼠标与键盘输入选项
19. 3. 2 游戏杆输入
19. 3. 3硬件加速半透明图像
19. 3. 4 高精度定时器
19. 3. 5 Linux中的硬件加速图形和全屏 方式
19. 3. 6 运行环境中的硬件加速三维 特性
19. 3. 7 HotSpotSIMD优化
19. 3. 8 更多字体光顺选项
19. 3. 9 其他情况
19. 4 新设备与Java Games Profile JSR
134 19. 5 小结
Java 是一个由 Sun 公司开发而成的新一代编程语言。使用它可在各式各样不同机器、不同操作平台的网络环境中开发软件。
游戏编程属于软件开发。用编程制作软件属于编程，但是指在进行中，而一但编制完整就属于软件开发了。