《游戏脚本高级编程》PDF下载

  • 购买积分:23 如何计算积分?
  • 作  者:(美)Alex Varanese著;陈洪,罗颖民,李华杰翻译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2006
  • ISBN:7302130795
  • 页数:889 页
图书介绍:本书论述什么是脚本编程,阐述游戏编程的理念,如何编写脚本语言,学习编译器理论。

第1章 脚本编程概论 2

1.1 什么是脚本编程 2

第1篇 脚本编程的基本原理 2

1.2 结构化的游戏内容——一种简单的游戏设计方法 3

1.3 通过将逻辑和具体实现相互分离来改善这种方法 7

1.4 硬编码的危险性 9

1.5 将功能函数存放到外部文件 10

1.6 脚本是如何运行的 12

1.6.1 计算机程序设计概述 12

1.6.2 脚本编程概述 14

1.7.1 面向过程的语言系统和面向对象的语言系统 16

1.7 脚本系统的基本类型 16

1.7.2 基于命令的语言系统 17

1.7.3 动态链接的模块系统 18

1.7.4 编译型代码和解释型代码 19

1.7.5 现有的脚本设计方法 20

1.8 总结 21

第2章 脚本编程系统的应用 22

2.1 编写脚本的普遍目的 22

2.2 角色扮演游戏(Role Playing Games,RPGs) 24

2.2.1 复杂而又有深度的故事情节 24

2.2.2 非玩家角色(Non-Player Characters,NPCs) 25

2.2.3 物品和武器 31

2.2.4 敌人 34

2.3 第一人称射击游戏(First-Person Shooters,FPSs) 38

2.3.1 物品、迷题和开关 39

2.3.2 敌人智能(enemy AI) 44

2.4 总结 46

第2篇 基于命令的脚本 48

第3章 基于命令的脚本编程绪论 48

3.1 基于命令的脚本编程的基础知识 48

3.1.1 高级的引擎控制 49

3.1.4 实际解决掉的一些问题 51

3.1.2 命令 51

3.1.3 你这个领域中的大师 51

3.2 基于命令的脚本编程综述 52

3.2.1 游戏引擎的功能估计 52

3.2.2 载入和执行脚本 54

3.3 实现一种基于命令的语言 56

3.3.1 设计这种语言 56

3.3.2 编写脚本 56

3.3.3 实现 57

3.4 为一个游戏的介绍顺序编写脚本 67

3.4.1 语言 68

3.4.3 执行 69

3.4.2 脚本 69

3.5 为RPG游戏中某个角色的行为编写脚本 70

3.5.1 语言 71

3.5.2 改进语法 71

3.5.3 管理游戏中的角色 72

3.5.4 脚本 74

3.5.5 执行 75

3.5.6 游戏演示中的主循环 78

3.6 并发的脚本执行 80

3.9 挑战 82

3.8 CD上的内容 82

3.7 总结 82

第4章 基于命令的高级脚本 84

4.1 新的数据类型 85

4.1.1 布尔变量 85

4.1.2 支持浮点数 85

4.1.3 通用目的符号常量 86

4.2 简单迭代和条件逻辑 92

4.2.1 条件逻辑和游戏标记 93

4.2.2 将代码按块分组 94

4.2.3 块列表 96

4.2.4 迭代逻辑 97

4.2.5 嵌套 98

4.3 基于事件的脚本 100

4.4 将脚本编译成二进制格式 102

4.4.1 提高执行速度 102

4.4.2 检测编译时的错误 103

4.4.3 恶意的脚本攻击 103

4.4.4 商用编译器是如何工作的 104

4.5 基本的脚本预处理 108

4.6 总结 111

第3篇 结构化的脚本编程语言概述 114

第5章 结构化的脚本编程系统介绍 114

5.1 总体的脚本编写结构 114

5.1.2 低级代码 115

5.1.1 高级代码 115

5.1.3 虚拟机 116

5.2 深入分析XtremeScript 118

5.2.1 高级代码/编辑 119

5.2.2 低级代码/汇编 122

5.2.3 虚拟机 124

5.3 XtremeScript系统 125

5.3.1 高级部分 125

5.3.2 低级部分 125

5.3.3 运行时间 125

5.4 总结 126

6.1 集成(Integration) 127

第6章 对现有脚本编程系统的集成和使用 127

6.2 脚本系统的执行过程 131

6.3 跳动的外星人头像演示 132

6.4 Lua(以及基本的脚本编程概念) 135

6.4.1 Lua系统一瞥 136

6.4.2 Lua语言 137

6.4.3 将Lua语言与C语言相集成 153

6.4.4 高级的Lua话题 182

6.4.5 网络链接 183

6.5 Python 183

6.5.1 Python系统一览 183

6.5.2 Python语言 185

6.5.3 Python与C的集成 200

6.5.4 高级话题 219

6.5.5 网络链接 220

6.6 Tcl 220

6.6.1 ActiveStateTcl 221

6.6.2 Tcl语言 223

6.6.3 Tcl和C的集成 241

6.6.4 高级主题 255

6.6.5 网络链接 255

6.7 你到底该使用哪个脚本编程系统呢 256

6.10 CD上的内容 258

6.8 编写一个实际的游戏 258

6.9 总结 258

第7章 设计一个面向过程的脚本编程语言 259

7.1 语言的常见类型 259

7.1.1 汇编类型的语言(Assembly-Style Languages) 260

7.1.2 权衡利弊 263

7.2 函数 265

7.2.1 面向对象程序设计 268

7.2.2 XtremeScript语言概述 269

7.2.3 语法和特性 271

7.2.4 保留字列表 280

7.3 总结 281

第4篇 设计和实现一种底层语言 284

第8章 汇编语言入门 284

8.1 什么是汇编语言 284

8.2 为什么现在讲述汇编 285

8.3 汇编语言是怎样工作的 285

8.3.1 指令 285

8.3.2 助记符和操作码 294

8.3.3 RISC和CISC 296

8.3.4 交指令集 298

8.3.5 寄存器 298

8.3.6 堆栈 299

8.4 XVM汇编简介 304

8.4.1 初始赋值 305

8.4.2 XVM指令集 306

8.4.3 XASM指示符 310

8.5 XVM汇编语言概要 312

8.6 小结 313

第9章 构造XASM汇编器 314

9.1 一个简单的汇编器是如何运作的 315

9.1.1 指令的汇编 315

9.1.2 变量的汇编 317

9.1.3 操作数的汇编 319

9.1.4 字符串型字面量的汇编 321

9.1.5 跳转指令和函数调用的汇编 322

9.2 XASM概述 326

9.2.1 内存管理 326

9.2.2 输入:一个XVM汇编脚本的结构 328

9.2.3 输出:一个XVM可执行文件的结构 338

9.3 汇编器的实现 345

9.3.1 基本的词法分析/语法分析理论 345

9.3.2 基本字符串处理 350

9.3.3 汇编器的框架 356

9.3.4 词法分析/属性字识别 376

9.3.5 错误处理 398

9.3.6 语法分析 400

9.3.7 构建.XSE可执行文件 418

9.3.8 汇编过程 423

9.4 小结 427

9.5 CD上的内容 428

9.6 挑战 428

第5篇 设计和实现虚拟机 430

第10章 汇编语言入门 430

10.1 虚拟机的灵魂 430

10.1.1 模拟硬件 430

10.1.2 虚拟机的主要组成部分 432

10.1.3 多线程 433

10.2 虚拟机生命周期的简单概述 434

10.1.4 和主应用程序的集成 434

10.2.1 装载脚本 435

10.2.2 从入口点开始执行 436

10.2.3 执行周期 436

10.2.4 函数调用 437

10.2.5 终止和关闭 439

10.3 XVM原型的结构概述 440

10.3.1 脚本头 440

10.3.2 运行时值 441

10.3.3 指令流 442

10.3.4 运行时堆栈 443

10.3.5 函数表 444

10.3.7 最终的脚本结构 445

10.3.6 主应用程序API调用表 445

10.4 建立XVM原型 446

10.4.1 装载.XSE可执行文件 446

10.4.2 结构接口 456

10.4.3 初始化虚拟机 471

10.4.4 执行周期 473

10.4.5 终止与关闭 488

10.6 CD上的内容 490

10.7 挑战 490

10.5 概述 490

第11章 高级虚拟机的概念和问题 492

11.1 新一代虚拟机 492

11.2 多线程 492

11.2.1 多线程的基本原理 493

11.2.2 装载和存储多个脚本 503

11.2.3 执行多线程 511

11.3 主应用程序集成 515

11.3.1 和主应用程序并行运行脚本 515

11.3.2 集成接口简介 517

11.3.3 XVM的公有接(Public Interface) 524

11.3.4 实现集成接口 526

11.3.5 增加线程优先级 550

11.4 演示最终的XVM 557

11.5 小结 563

11.6 CD上的内容 563

11.7 挑战 563

第6篇 编译高级代码 566

第12章 编译理论概论 566

12.1 编译理论概述 566

12.1.1 编译的几个阶段 567

12.1.2 XtremeScript与XASM是如何工作的 578

12.1.3 高级编译理论 579

12.2 总结 587

13.1 基础知识 588

第13章 词法分析器 588

13.1.1 从字符到单词 589

13.1.2 属性标注 590

13.1.3 词法分析方法 590

13.2 词法分析器的工作 594

13.2.1 读入并保存文本文件 595

13.2.2 显示结果 596

13.2.3 错误处理 597

13.3 一个数值词法分析器 598

13.3.1 分词策略 598

13.3.2 完成这个演示程序 606

13.4 分析标识符和保留字 608

13.4.1 新的状态和属性符 609

13.4.2 测试文件 610

13.4.3 升级词法分析器 610

13.4.4 完成这个演示程序 613

13.5 最后的词法分析器:分隔符、运算符和字符串 616

13.5.1 分析分隔符 616

13.5.2 分析字符串 619

13.5.3 运算符 622

13.5.4 完成这个演示 636

13.6 总结 640

13.8 挑战 641

13.7 CD上的内容 641

第14章 构造XtremeStcript编译器框架 642

14.1 策略纵览 642

14.1.1 前端 643

14.1.2 中间代码模块 645

14.1.3 后端 645

14.1.4 主要结构 646

14.1.5 接口和封装 648

14.1.6 编译器的生命周期 649

14.2 命令行接口 651

14.2.1 Logo和使用信息 651

14.2.2 读入文件名称 652

14.2.3 读入选项 654

14.3 初始化数据结构 658

14.3.1 链表 658

14.3.2 堆栈 664

14.4 初始化和关闭 666

14.4.1 全局变量和数据结构 666

14.4.2 初始化 666

14.4.3 关闭 667

14.5 编译器的模块 667

14.6 装载模块 669

14.7 预处理模块 670

14.7.1 单行注释 671

14.7.2 块注释 672

14.7.3 预处理指令 674

14.8 编译器的表格 676

14.8.1 符号表 676

14.8.2 函数表 680

14.8.3 字符串表 683

14.9 集成词法分析器模块 684

14.9.1 回卷属性符流 684

14.9.2 一种新的源代码格式 687

14.9.3 其他新的函数 689

14.11.1 普通错误 693

14.11 错误处理 693

14.9.4 重置词法分析器 693

14.10 语法分析器模块 693

14.11.2 代码错误 694

14.11.3 错误层叠 695

14.12 中间代码模块 696

14.12.1 实现中间代码的方法 696

14.12.2 XtremeScript 中间代码 699

14.12.3 接口 703

14.13 代码生成模块 708

14.13.1 代码生成基础 708

14.13.2 通用格式 709

14.14 生成最终的可执行体 722

14.15 整理 724

14.15.1 初始化编译进程 724

14.15.2 打印编译统计数据 724

14.15.3 编写测试脚本 726

14.16 总结 730

14.17 CD上的内容 731

14.18 挑战 731

第15章 语法分析和语义分析 732

15.1 什么是语法分析器 732

15.1.1 语法和语义分析 733

15.1.2 表达式语法 734

15.1.3 语法树 736

15.1.4 语法分析是如何工作的 739

15.2 XtremeScript语法分析器模块 741

15.2.1 基础 741

15.2.2 分析策略 745

15.3 分析语句和代码块 745

15.3.1 语法图 746

15.3.2 实现 747

15.4 分析声明语句 750

15.4.1 函数声明 750

15.4.2 变量和数组声明 756

15.4.3 主应用程序API函数声明 759

15.4.4 测试代码生成模块 763

15.5 分析简单的表达式 765

15.5.1 表达式分析策略 765

15.5.2 理解表达式语法分析器 769

15.5.3 编码表达式分析 771

15.6 完整表达式分析 780

15.6.1 新因子类型 780

15.6.2 分析函数调用 782

15.6.3 新的单目运算符 783

15.6.4 新的双目运算符 784

15.6.5 逻辑和关系运算符 784

15.7 独立的运行时环境 787

15.6.6 左值和右值 787

15.7.1 本地应用程序 788

15.7.2 主应用程序API 790

15.8 分析高级语句和结构 792

15.8.1 赋值语句 792

15.8.2 函数调用 798

15.8.3 return 799

15.8.4 While循环 802

15.8.5 for循环 812

15.8.6 If分支 812

15.10 测试驱动 817

15.9 语法图总结 817

15.10.1 Hello,World! 818

15.10.2 绘制矩形 819

15.10.3 Bouncing Head示例 822

15.11 总结 843

15.12 CD上的内容 843

15.13 挑战 844

第7篇 完成培训 846

第16章 应用这个系统开发的一个完整游戏 846

16.1 介绍LockDown 846

16.1.1 素材来源 846

16.1.2 最初的计划和设置 847

16.2.1 集成XtremeScript 857

16.2 脚本策略 857

16.2.2 主API 858

16.2.3 编写脚本 860

16.2.4 装载和运行脚本 867

16.2.5 速度问题 868

16.3.2 与物体交互 870

16.3.3 区域地图 870

16.3.4 战斗 870

16.3.1 控制 870

16.3 如何玩Lockdown 870

16.3.5 完成这个目标 871

16.4 总结 871

16.5 CD上的内容 871

16.6 挑战 872

第17章 从今往后,何去何从 873

17.1 现在究竟该干什么呢 873

17.2 扩展你的知识 874

17.2.1 编译器理论 874

17.2.2 运行时环境 876

17.3 高级话题和思想 878

17.4 总结 888