登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入   新用戶註冊
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / 物流,時效:出貨後2-4日

2024年10月出版新書

2024年09月出版新書

2024年08月出版新書

2024年07月出版新書

2024年06月出版新書

2024年05月出版新書

2024年04月出版新書

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

『簡體書』游戏编程算法与技巧

書城自編碼: 2932732
分類: 簡體書→大陸圖書→計算機/網絡圖形圖像/多媒體
作者: Sanjay Madhav 著,刘瀚阳 译
國際書號(ISBN): 9787121276453
出版社: 电子工业出版社
出版日期: 2016-10-01
版次: 1 印次: 1
頁數/字數: 296/408000
書度/開本: 16开 釘裝: 平装

售價:NT$ 668

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
无法忍受谎言的人:一个调查记者的三十年
《 无法忍受谎言的人:一个调查记者的三十年 》

售價:NT$ 290.0
战争社会学专论
《 战争社会学专论 》

售價:NT$ 540.0
剑桥意大利戏剧史(剑桥世界戏剧史译丛)
《 剑桥意大利戏剧史(剑桥世界戏剧史译丛) 》

售價:NT$ 740.0
教育何用:重估教育的价值
《 教育何用:重估教育的价值 》

售價:NT$ 299.0
理想城市:环境与诗性
《 理想城市:环境与诗性 》

售價:NT$ 390.0
逆风翻盘  危机时代的亿万赢家 在充满危机与风险的世界里,学会与之共舞并找到致富与生存之道
《 逆风翻盘 危机时代的亿万赢家 在充满危机与风险的世界里,学会与之共舞并找到致富与生存之道 》

售價:NT$ 625.0
工业互联网导论
《 工业互联网导论 》

售價:NT$ 445.0
孤独传:一种现代情感的历史
《 孤独传:一种现代情感的历史 》

售價:NT$ 390.0

建議一齊購買:

+

NT$ 1210
《 深度学习 》
+

NT$ 396
《 编程风格:好代码的逻辑 》
+

NT$ 929
《 深入理解并行编程 》
+

NT$ 922
《 深度学习、优化与识别 》
+

NT$ 468
《 The Little Schemer:递归与函数式的奥妙 》
+

NT$ 922
《 游戏设计、原型与开发:基于Unity与C#从构思到实现 》
編輯推薦:
1.本书全面介绍游戏行业中会用到的算法和技术,包括2D、3D图形学,物理,人工智能,摄像机等多个方面。
2.采用了独特的与平台架构无关的方法来展开开发,适用于任何游戏、风格、语言、框架。
3.每个概念的展示都使用了伪代码,并经过验证,容易被程序员们理解。
4.本书*后以两款完整游戏作为总结,使用了很多书中介绍的算法和技术,全部源代码都可下载。
5.请回顾每一章课后习题,能巩固所学,助你前进。
內容簡介:
本书详细综述了应用在许多重要视频游戏编程中的算法和技术。书中采用了一种独立于平台和结构的方法,能协助开发几乎任何风格、语言和框架的游戏,并展现2D和3D图像、物理、人工智能、相机等工作的基本技术。书中的每个概念都是用C#、Java或 C程序员直观明白的伪代码阐述的,并且作者已经改进和证实过这些伪代码。本书最后作者详细分析了两个完整的游戏,清楚展现了前面章节讲到的很多技术和算法。
關於作者:
Sanjay Madhav 是南加利福尼亚大学的讲师,在那里他教授了几门与游戏编程相关的课程。而在全职加入南加利福尼亚大学之前,他作为程序员在许多公司工作过,包括Electronic Arts、Neverso 及Pandemic Studios。虽然他在很多系统上都有着丰富的开发经验,但是他最感兴趣的还是游戏机制的开发。他所参与的游戏包括《荣誉勋章:太平洋突袭》(Tony Hawks Project 8)、《指环王:征服》(Lord of the Rings: Conquest)和The Saboteur。
从2008 年开始,Sanjay 在南加利福尼亚大学兼职,当时他还是全职游戏程序员当中的一员。在2009 年年末Pandemic Studios 关闭之后,他决定专注于教越来越重要的游戏程序员。他的主要课程是面向本科生的游戏编程课程,而且已经连续教了10 个学期。
刘瀚阳,腾讯互娱高级工程师,Life-long级别的游戏玩家。兴趣使然,大学本科就选择了游戏专业,毕业后一直专注于游戏研发。参与过游戏引擎、大型商业MMORPG、中小型手游的开发。擅长游戏架构设计与开发,代码写得贼溜,略懂产品。一直在游戏行业中默默前进,希望有一天也能做出一款伟大的游戏。
目錄
目录
第1章游戏编程概述1
游戏编程的发展2
Atari时期(19771985年) 2
NES和SNES 时期(19851995年) 3
PS和PS2时期(19952005年) 3
Xbox360、PS3和Wii时期(20052013年) 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
 习题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
Lua194
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章 游戏示例:塔防(PCMac) 232
 概览233
C# 233
XNA 235
MonoGame 235
 代码分析236
设置236
单件236
游戏类237
游戏状态237
游戏对象238
关卡239
计时器239
寻路240
摄像机和投影241
输入241
物理242
本地化242
图形242
声音243
用户界面243
 练习245
 总结246
附录A 习题答案247
附录B 对开发者有用的工具260
內容試閱
推荐序
当瀚阳让我为他的译作作序的时候,我还是有些吃惊的。我并非业界名人,虽然在游戏行业摸爬滚打了十几年,但并没有多少建树,为了配得上译者所散发出的光芒,我多少也要发掘出自己的一些亮点。如果资历也算亮点的话,我倒是有些的。1993 年我有了自己的第一台电脑,那时的电脑还处于386 的时代,硬盘不过200MB,内存不过4MB,用着5 英寸的软驱,光驱还在萌芽状态。当时我一心想做游戏,玩着《Wolf3D》、《Doom》,仰望着id Soft的成就。2001 年我终于如愿进入了游戏行业,有幸赶上了西山居《月影传说》的后期开发。之后在三大游戏公司转了一圈,如今沉浮于手机游戏开发的大潮中。其间也曾参与了两款3D引擎的早期开发工作,其中的成果已融合在两三款早已上市的游戏当中。我参与程度最深,也算稍微有点名气的游戏就是《斗战神》了。
我和瀚阳相识缘于我们现在共同参与的这个项目,我是项目的第一个客户端程序员,瀚阳是第二个。当项目还只有我一个前台程序员的时候,我一个人要面对十几个美工产出的资源和四五个策划提出的需求,真是压力很大。瀚阳的加入仿佛给项目增加了第二台引擎,各种架构迅速完善起来,功能也越来越完整,项目顺利度过了Demo 期,得以立项。瀚阳在游戏开发方面涉猎广泛,精通多种语言,做过端游,写过手游,参与过3D 引擎开发。游戏开发之外瀚阳也有着广泛的兴趣,他的博客就是自己搭建的,跑在租用的服务器上,可以称得上是全栈程序员。游戏行业加班是出了名的,对于瀚阳能在繁忙的工作之余抽出时间来翻译这本书,我是十分佩服的,每一个程序员都不应该局限于自己所在的公司与工作,而应该在更广阔的空间拓展自己的职业生涯。
最后回到本书。如果你想进入游戏开发行业,或者对于游戏开发你已经入门但还缺乏一个全面的了解,本书可以作为不错的入门书籍。本书读起来不会那么累,能够使你快速了解游戏开发所涉及的众多领域,建立一个较为全面的认识。在此之后你可以针对感兴趣的方面购买学习更加深入的书籍。
 腾讯互娱前台程序技术指导
陈鹏
译者序
我与本书的一些缘分
我自己是多年的玩家了。在中学时期就暗自下定决心,一定要做游戏。于是不顾反对,大学选择了游戏专业,后来通过一套类似XNA 的框架进行开发,在学习的过程中一边写游戏,一边扩展框架。从最初的使用DirectX 绘制2D 精灵开发俄罗斯方块,到写3D 骨骼蒙皮动画做3D 射击游戏,慢慢地学会了很多技术,比如AI、网络、物理、脚本等。这些知识是成长起来的,于是每学到一点新技术都可以往里面塞,逐渐地形成了自己系统的理解。
雕爷有一篇文章说的好,临摹是最好的学习方法。因为临摹不仅需要你拆解分析对象作为输入,还需要以自己的理解作为输出。这种带着主动思考的输入输出,无形中就对临摹对象有了深刻的理解,这不是走马观花那种被动的学习效率能比拟的。这种经过充分思考的练习,最能够将知识内化,而只有站在前人的基础之上,创新才会比较靠谱。在我看来,本书的内容,属于手把手地对各种GamePlay 拆解,然后实现,让知识一点一点地成长起来。更加难得的是,因为作者从业界转向了教育界,所以本书不仅内容上系统全面,而且语言上简单清晰,让人易于理解。
兴趣是最好的老师,GamePlay 不像操作系统、渲染引擎、物理引擎那么枯燥,本书可以很轻松就读完。初学者完全可以从GamePlay 入手,在XNA 框架上实现书中的内容,然后在深入的过程中补全游戏开发中各个系统的知识。而有经验者也可以从本书中补全对游戏软件的系统理解,比如一开始作者就阐明了游戏程序的三要素:游戏时间、游戏对象、游戏循环,还有一些有意思的诀窍,比如用xyzzy 口诀记住叉乘运算,也有一些案例分析《魔兽世界》的UI 插件系统,以及工作中的教训《指环王》中音频引擎的设置。
除此之外,本书还提供了专业方向上的参考资料,让读者在感兴趣的话题上深入学习。每章都会提出关键问题并列出有深度的参考资料,这些资料大部分是行业经典,比如像《游戏引擎架构》、Real-Time Rendering 这样的神作当然没有错过。
游戏行业是一个很有意思、充满朝气的行业,有很多真正热爱游戏的人。当然,同时有很多问题,但这何尝不是机会呢?
刘瀚阳
前言
不久之前,开发商业游戏的知识还只有少数游戏界精英才知道。在那时候,学习真正用于AAA 游戏的算法就像学习一些黑暗禁忌的魔法一样(比如Michael Abrash 的Graphics ProgrammingBlack Book)。如果一个人想要接受游戏编程教育,那么只能去为数不多的培训学校。可是10 多年过去之后,游戏编程教育发生了非常大的变化。现在一些顶尖的大学也提供了游戏编程的课程和学位,而且每年加入这个领域的人数也越来越多。
游戏开发课程爆发的结果就是,游戏产业更容易招到需要的人员。21 世纪早期的时候,大多数想参与游戏开发的年轻人都拥有着很强的计算机科学背景及创造游戏的热情。这些有着良好基础的年轻人,会在后续工作中不断学习更加高级的游戏编程技巧。今天,有了更多的专注于游戏教育的地方,大量的游戏公司希望他们的年轻程序员可以拥有游戏编程相关的丰富阅历。
为什么需要这么一本游戏编程的书
游戏课程的增长也激发出大学课程设计的需求。可是现在市场上大多数的书都只面向两种读者:希望利用业余时间做点小游戏的爱好者和有着多年经验的专业人员。两种书都会让在校学生感到迷惑。爱好者系列图书不够系统严谨,太过专业的书学生又看不懂。
我在南加利福尼亚大学讲的其中一门课程是ITP 380:游戏编程。课堂上的学生大多数都是大二或者大三的,懂一点编程。有些学生已经能很熟练地运用GameMaker 或者Unity 开发游戏原型了。但ITP 380 是学生们第一门正式的游戏编程课程。我希望本书能够成为这种课程的最佳补充。虽然受众是在校学生,但是其他对游戏编程感兴趣的人也能获得很大价值。
本书的一个特色就是前12 章与任何平台和框架无关。这就是说,本书适用于大部分语言和平台。这与市场上其他书籍不一样,那些书往往因为适用某个版本的框架导致几年之后就没用了。正因为这种独立性,本书将会长期适用。这对大学课程设置来说很有帮助,因为他们运用不同的开发框架和语言。这就是说,示例代码总是有价值的。也因此,最后两章会使用两种不同的框架去开发游戏,之前的示例代码会在这些游戏上体现。
谁应该读这本书
本书认为读者已经掌握一门面向对象编程语言(C、C#、Java),同时也能熟练运用各种数据结构,比如链表、二叉树及哈希表。这些内容通常在计算机科学的前两个学期就会学到,因此对于那些已经完成这些课程的人来说阅读本书是没问题的。更进一步来讲,如果能够掌握微积分,那么后面的线性代数和物理章节读者会更容易理解。
虽然不是必需的,但如果读者提前掌握了基础的游戏策划或者有熟悉的游戏会有不少帮助。同时,本书会专门讨论某种特定的编程机制,所以阅读参考资料会有更多收获。有过GameMaker 制作游戏原型经验的话会更好,但仍然不是必需的。
虽然本书意在为学校而写,但是对于已经掌握了通用编程技巧而又对游戏专业感兴趣的人来说,会很有帮助。不像一些学院派的理论书籍,书中的话题总是通过例子形象地展开。
最后,因为本书涵盖非常多话题,对希望掌握游戏编程多个方面的人来说也很有帮助。还有一点需要说明,资深游戏开发者不会在本书中找到太多的最新技术。
本书是怎么组织的
本书的前12 章在游戏实战中演示了许多算法与技术。这些话题涵盖2D 到3D、物理学、人工智能、摄像机等。虽然设计上第1 章到第12 章是顺序阅读的,但是有些章节可以直接阅读。图P.1 把各章节的依赖关系罗列了出来。所以,最好先阅读依赖章节。
最后两章的游戏示例是为了运用前面12 章所学到的算法和技术。两个示例游戏分别是2D滚轴iOS 游戏(用Objective-C 在Cocos2D 上开发)和PCMacLinux 平台的3D 塔防游戏(用C# 在XNAMonoGame 上开发)。两个游戏的源码可以在本书的网站上下载:http:gamealgorithms.net。
本书演示风格
这节讲本书的一些演示约定,比如代码和公式。
侧边栏和注意
在本书某些位置你能看到一些侧边栏和注意版块,像下面这样。
(图P.1 前12 章的依赖关系)
侧边栏
在侧边栏中,会讨论某些运用在某款游戏中特定的算法和技术。有时候会是一些我所开发的游戏中的趣闻轶事,也有时候会是其他游戏的。不管怎样,这里会更加深入地讨论这些在真实游戏开发中会遇到问题的概念。
注意
注意里更多的是不相关的有趣内容。虽然它们不是那么相关,但可能会让我们对话题有更加深刻的认识。
伪代码
为了保持语言的中立性,算法已经以伪代码的形式展现。伪代码的语法与Lua 比较近似,虽然也有点像C 和C#。代码展示会像这样:
function Updatefloat deltaTime
foreach Object o in world
注释
o.UpdatedeltaTime
loop
end
代码高亮与IDE 近似。关键词用蓝色,注释用绿色,类名用蓝绿色,变量用


译者序
我与本书的一些缘分
我自己是多年的玩家了。在中学时期就暗自下定决心,一定要做游戏。于是不顾反对,大学选择了游戏专业,后来通过一套类似XNA 的框架进行开发,在学习的过程中一边写游戏,一边扩展框架。从最初的使用DirectX 绘制2D 精灵开发俄罗斯方块,到写3D 骨骼蒙皮动画做3D 射击游戏,慢慢地学会了很多技术,比如AI、网络、物理、脚本等。这些知识是成长起来的,于是每学到一点新技术都可以往里面塞,逐渐地形成了自己系统的理解。
雕爷有一篇文章说的好,临摹是最好的学习方法。因为临摹不仅需要你拆解分析对象作为输入,还需要以自己的理解作为输出。这种带着主动思考的输入输出,无形中就对临摹对象有了深刻的理解,这不是走马观花那种被动的学习效率能比拟的。这种经过充分思考的练习,最能够将知识内化,而只有站在前人的基础之上,创新才会比较靠谱。在我看来,本书的内容,属于手把手地对各种GamePlay 拆解,然后实现,让知识一点一点地成长起来。更加难得的是,因为作者从业界转向了教育界,所以本书不仅内容上系统全面,而且语言上简单清晰,让人易于理解。
兴趣是最好的老师,GamePlay 不像操作系统、渲染引擎、物理引擎那么枯燥,本书可以很轻松就读完。初学者完全可以从GamePlay 入手,在XNA 框架上实现书中的内容,然后在深入的过程中补全游戏开发中各个系统的知识。而有经验者也可以从本书中补全对游戏软件的系统理解,比如一开始作者就阐明了游戏程序的三要素:游戏时间、游戏对象、游戏循环,还有一些有意思的诀窍,比如用xyzzy 口诀记住叉乘运算,也有一些案例分析《魔兽世界》的UI 插件系统,以及工作中的教训《指环王》中音频引擎的设置。
除此之外,本书还提供了专业方向上的参考资料,让读者在感兴趣的话题上深入学习。每章都会提出关键问题并列出有深度的参考资料,这些资料大部分是行业经典,比如像《游戏引擎架构》、Real-Time Rendering 这样的神作当然没有错过。
游戏行业是一个很有意思、充满朝气的行业,有很多真正热爱游戏的人。当然,同时有很多问题,但这何尝不是机会呢?
刘瀚阳
邮箱:lauhonyeung@gmail.com
博客:jjyy.guru

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 台灣用户 | 香港/海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.