1、游戏开发工具,4-1 游戏开发工具简介 4-2 C/C+程序设计语言 4-3 VISUAL BASIC程序设计语言 4-4 JAVA程序设计语言 4-5 FLASH与ACTION SCRIPT 4-6 OPENGL 4-7 DIRECTX,游戏设计概论(第二版),游戏开发工具,4-1 游戏开发工具简介 4-2 C/C+程序设计语言 4-3 VISUAL BASIC程序设计语言 4-4 JAVA程序设计语言 4-5 FLASH与ACTION SCRIPT 4-6 OPENGL 4-7 DIRECTX,游戏设计概论(第二版),4-1 游戏开发工具简介,游戏开发工具的选择 程序设计语言 游戏开发工具
2、、引擎 程序设计语言 VB (事件处理) C/C+ (速度快,直接调用操作系统的组件) Java (跨平台,网络联机,手机游戏) Delphi,4-1-1 程序设计语言的选择,游戏设计概论(第二版),4-1 游戏开发工具简介,游戏平台 大型游戏机 电视游戏机 掌上型游戏机 PC游戏平台 Windows (用户最多) Linux Macintosh UNIX(Solaris) 开发游戏时要考虑游戏运行的平台,4-1-2 操作平台的考虑,游戏设计概论(第二版),4-1 游戏开发工具简介,开发游戏早期(DOS时代),专门编写代码控制计算机与外设间的底层操作(成像、音效、输入设备等) 图形函数库(制作
3、游戏时的作用如右下图) OpenGL(SGI ) DirectX (微软) 使用简单(直接调用、设置参数,如下图),4-1-3 游戏工具函数库的作用,游戏设计概论(第二版),4-2 C/C+程序设计语言,早期编写游戏:C语言+汇编语言 C+:C语言+改进的输入输出+面向对象 如果要编写大中型游戏的话,建议多使用C/C+作为程序设计语言。 C/C+是所有程序设计人员公认的功能强大的程序设计语言,也是运行时速度比较快的语言。,游戏设计概论(第二版),4-2 C/C+程序设计语言,4-2-1 执行平台 高级程序设计语言,需编译 不能跨平台 调用系统功能或组件很方便 4-2-2 语言特性 指针、内存管
4、理 面向对象(如右图) 速度快,游戏设计概论(第二版),4-2 C/C+程序设计语言,C/C+集成开发环境 Microsoft :Visual C+ Borland : C+ Builder Dev C+ Kdevelop,4-2-3 开发环境介绍,游戏设计概论(第二版),4-2 C/C+程序设计语言,大型游戏软件开发模式 VC+ + Win API Win API :Windows Application Interface(windows应用程序接口) 包含Windows提供的动态链接库(DLL) 包含了Windows内核及应用程序所需功能 VC+ + MFC MFC:Microsoft
5、Foundation Class(微软基础类库) 封装了大部分API,4-2-4 Visual C+与游戏设计,游戏设计概论(第二版),4-3 Visual Basic程序设计语言,微软1991年,推出Visual Basic,将 Basic语言加入可视化的概念。 Visual Basic最容易上手,但是运行速度缓慢,而且简单的程序语言在功能性上通常很有限,对于大型游戏而言,Visual Basic的速度与功能就显得不足。 VB开发环境如下图。,游戏设计概论(第二版),4-3 Visual Basic程序设计语言,4-3-1 执行平台 需编译 只能在windows下运行 可以调用windows
6、 API和DirectX 4-3-2 语言特性 语法简单,使用方便 界面可视化设计 功能有限,适于小型游戏的开发 运行速度慢,游戏设计概论(第二版),4-3 Visual Basic程序设计语言,4-3-3 Visual Basic与游戏设计 开发直观方便 速度慢,影响游戏的流畅度 仅编写一些小游戏 Direct7.0提供了VB调用的接口机制,使得VB可以跳过操作系统,直接访问底层硬件,速度明显提升,游戏设计概论(第二版),4-4 Java程序设计语言,Java程序具有跨平台的优点,所以Java非常适合拿来进行游戏制作。,游戏设计概论(第二版),4-4 Java程序设计语言,4-4-1 运行平
7、台 跨平台:不重写编译,在其他操作系统上运行 两次编译(如左下图) 程序设计师针对java运行环境进行程序设计(右下图) Java程序设计方式 应用程序方式 Applet小程序方式,Java程序的执行流程 Java运行环境设计,游戏设计概论(第二版),4-4 Java程序设计语言,4-4-2 语言特性 简单、自动内存管理、安全 面向对象 运行速度慢 运行时二次编译 动态加载类库 4-4-3 Java与游戏设计 功能增强,增加了绘图、网络、多媒体等的API 适于开发网络联机游戏、Applet小游戏、手机游戏,游戏设计概论(第二版),4-5 Flash与ActionScript,Flash设计出来
8、的游戏画面精美,容量也小,所以在小游戏的设计领域迅速走红。 可以使用Flash编写:2D平面游戏、规划制作闯关游戏、平面RPG游戏 Flash特点(文件小) 矢量图 重复利用图片片段 图片压缩 编播放边下载 补间动画 (时间轴、关键帧、过渡帧),游戏设计概论(第二版),4-5 Flash与ActionScript,Flash与游戏设计 内置脚本语言ActionScript 与用户交互 通过语言创建对象、设置动画 加入面向对象的特性 在小游戏领域很风靡 很多在传统平台上的游戏被改编为Flash小游戏,游戏设计概论(第二版),4-6 OpenGL,图形 API 游戏设计人员设计时,不必去考虑具体硬
9、件的特性,而只是按照3D API的接口标准来开发游戏,当游戏运行时则直接通过3D API来调用硬件资源。 目前个人电脑中主要应用的3D API有DirectX和OpenGL。 基于DirectX开发的游戏有:帝国时代3、孤岛惊魂、使命召唤2、Half Life2等。 而OpenGL则主要应用于专业的图形工作站,在游戏历史上也曾经和DirectX分庭抗礼,产生了一大批的优秀游戏,例如Quake3、Half Life、荣誉勋章的前几部、反恐精英等,目前在DirectX的步步紧逼之下,采用OpenGL的游戏已经日渐减少,但也不乏经典大作,例如基于OpenGL的DOOM3以及采用DOOM3引擎的Qua
10、ke4等。,4-6-1 OpenGL简介 4-6-2 OpenGL发展史 4-6-3 OpenGL函数说明 4-6-4 OpenGL的工作原理,游戏设计概论(第二版),4-6-1 OpenGL简介,OpenGL(Open Graphics Library,开放性图形库),最早是1992年在SGI公司的GL三维图形库为基础制定的一个通用共享的开放式三维图形标准。 OpenGL是一个与硬件无关的软件接口,可以在不同的平台如Windows 、Unix、Linux、MacOS、Solaris、OS2之间进行移植 是一套“计算机三维图形”处理函数库,是绘图成像的工业标准 是显卡厂商共同定义的通用函数库,
11、都依据该函数库来开发显示功能,游戏设计概论(第二版),4-6-2 OpenGL发展史,OpenGL版本发展,游戏设计概论(第二版),4-6-3 OpenGL函数说明,为了更方便的使用OpenGL来开发软件,开发了GLU和GLUT函数库,将一些常用的OpenGL API再做包装(如下图) GLUT工具库(OpenGL Utility Toolkit) 简化窗口代码的编写 GLU实用库(OpenGL Utility Library) 协助处理材质、投影与曲面模型 微软不积极支持OpenGL,C:WINDOWSsystem32opengl32.dll,仅支持到OpenGL 1.1,游戏设计概论(第二
12、版),4-6-4 OpenGL的工作原理,OpenGL绘图数据处理过程 2. OpenGL的绘图处理过程 (透明玻璃杯的显示),游戏设计概论(第二版),4-6-4 OpenGL的工作原理,OpenGL在处理绘图影像要求的时候,可以将它归纳成两种方式 软件需求硬件需求,游戏设计概论(第二版),4-7 DirectX,4-7-1 DirectX SDK简介 4-7-2 DirectGraphics 4-7-3 DirectSound 4-7-4 DirectInput 4-7-5 DirectShow 4-7-6 DirectPlay,DirectX是微软1995年开发的用途广泛的图形函数库 Di
13、rect的意思是“直接的”,X意味着“无限” 开发者可以不考虑设备差异而访问硬件最底层,使程序员从无尽的硬件驱动程序中解脱出来,游戏设计概论(第二版),DirectX简介,DirectX是由微软公司开发的用途广泛的API 它包含多个组件,提供了一整套的多媒体接口方案。 DirectX开发之初是为了弥补Windows 3.1系统对图形、声音处理能力的不足,而今已发展成为对整个多媒体系统的各个方面都有决定性影响的接口。 DirectX的发展 DirectX 1.0 、2.0、3.0、5.0、6.0、7.0、8.0、9.0,游戏设计概论(第二版),DirectX简介,DirectX的发展 Direc
14、tX 1.0 、2.0、3.0、5.0、6.0 DirectX 7.0 支持T&L(固定光影转换相比 ) DirectX 8.0 首次引入“像素渲染”(反映在特效上就是动态光影效果 ) 像素渲染引擎(PS,Pixel Shader) 顶点渲染引擎(VS,Vertex Shader) DirectX 9.0 PS单元的渲染精度已达到浮点精度,传统的硬件T&L单元也被取消 DirectX 9.0c和Shader Model 3.0(PS3.0和VS3.0)标准的推出,使人们对待游戏的态度开始从过去单纯地追求速度,转变到游戏画质和运行速度两者兼顾。,游戏设计概论(第二版),4-7-1 DirectX
15、 SDK简介,DirectX包括两部分 运行时函数库(Runtime) 各版本不同,向下兼容 软件开发工具包(DirectX SDK ,Software Development Kit),DirectX SDK的主要组件,游戏设计概论(第二版),4-7-2 DirectGraphics,负责2D和3D图形的运算,支持多种硬件加速 DirectX 8.0以前版本,绘图包括2部分: 1. DirectDraw(处理2D平面图像) 与Windows GDI(Graphics Device Interface图形设备接口)相似,简单易学易用 2. Direct3D (处理3D立体成像) 复杂,不易掌握
16、 DirectX 8.0以后版本, DirectDraw和 Direct3D集成为DirectGraphics 通过3D平台处理2D图形接口,游戏设计概论(第二版),4-7-3 DirectSound,Windows MCI(Media Control Interface)多媒体播放函数 DirectSound比MCI复杂、多元 基本:播放声音、处理混音 多种音效处理支持 低延迟音、3D立体声、协调硬件操作 录音功能、多媒体软件程序低间隔混音、硬件加速、存取音效设备 DirectSound一个音效播放区分为几个对象成员 声卡(DirectSound) 2D缓冲区(DirectSoundBuff
17、er) 3D缓冲区(DirectSound3DBuffer) 3D空间倾听者(DirectSound3DListener) 3D音效,倾听者位置不同,音效就不同(如右图),游戏设计概论(第二版),4-7-3 DirectSound,2D缓冲区、3D缓冲区、3D倾听者三者关系(如右上图) 2D缓冲区 基本:整体播放音量、播放速度 控制左右声道音量 同时播放多个声音文件 3D缓冲区 以2D缓冲区为基础,将其设置为具有控制3D音效的能力 获得3D缓冲区对象 用3D缓冲区对象对3D音效进行控制 3D倾听者 以2D缓冲区为基础3D音效播放移动方式(如右图) 音源不动,倾听者移动 倾听者不动,音源移动 音
18、源和倾听者同时移动,游戏设计概论(第二版),4-7-3 DirectSound,3D音效的倾听范围是立体空间 3D音效的播放 3D缓冲区和3D倾听者设置位置与音锥等信息 播放操作交回给2D缓冲区 音锥示意图(如右图) 音锥内、音锥外 内层音锥、外层音锥,游戏设计概论(第二版),4-7-4 DirectInput,DirectInput是用来处理游戏外围设备的装置,例如游戏杆、GamePad接口、方向盘、VR手套、力回馈、方向盘、飞行器、跳舞机等外围装置。 DirectInput使计算机游戏走向电视游戏机。 两种获得用户输入方式的比较 1. Windows的API函数 Windows应用程序使用
19、消息队列(Message queen)方式,响应用户输入缓慢,影响游戏操作速度 2. DirectInput 不通过操作系统直接对输入设备进行存取,可立即响应硬件状态,无须等待windows传递来的消息 对设备管理两种方式: (1)直接取得设备状态 (2)设置缓冲区,游戏设计概论(第二版),4-7-4 DirectInput,常见游戏操作设备 键盘 无方向性 无轴、多按钮 获取键盘信息的方法 设置缓冲区,暂存每个按键的状态,不断调用GetDeviceState()方法 GetDeviceState()方法:读取键盘状态并存入缓冲区 判断缓冲区内容,知道哪个按键按下或松开 鼠标 具有方向性 多按
20、钮、相对轴 使用结构体来表示 x(x轴移动)、y (y轴移动) 、z(移动量)、buttons(02数组,表示左、中和右键) 游戏杆(枪、球拍、推杆、方向盘等),游戏设计概论(第二版),4-7-4 DirectInput,常见游戏操作设备 游戏杆(枪、球拍、推杆、方向盘等) 为特定游戏设计 多轴、多按钮 DirectInput中定义两种游戏杆类型 一般游戏杆:6轴,32按钮(如下图所示) 新型游戏杆:24轴,128按钮,游戏设计概论(第二版),4-7-5 DirectShow,DirectShow是负责多媒体文件播放的主要组件 支持多种媒体格式 MPEG、AVI、MOV、MIDI、MP2、MP
21、3 通过“过滤器”技术进行媒体文件的播放 过滤器技术(解码、解压) 工作原理(如右图所示),2,解,游戏设计概论(第二版),4-7-5 DirectShow,用DirectShow播放新无敌炸弹超人片头动画 RenderFile()方法 Run()方法,游戏设计概论(第二版),4-7-6 DirectPlay,Windows提供的Winsock网络组件,适于开发小游戏,对于中大型游戏,需要使用DirectPlay DirectPlay是为多人网络游戏而开发的API 支持多种通信协议,提供多种联网方式进行网络游戏 网络聊天功能 安全保密措施,游戏设计概论(第二版),总结,游戏开发工具简介 C/C+程序设计语言 VISUAL BASIC程序设计语言 JAVA程序设计语言 FLASH与ACTION SCRIPT OPENGL DIRECTX,