第十章 计算机游戏.ppt
第十章第十章第十章第十章计算机游戏计算机游戏计算机游戏计算机游戏一、一、一、一、一、一、PCPCPC技术演进技术演进技术演进技术演进技术演进技术演进 第一浪潮是第一浪潮是PCPC的问世与普及,曾几何时,比尔的问世与普及,曾几何时,比尔 盖茨当盖茨当初初“让让PCPC走上每一个办公桌面走上每一个办公桌面”的梦想早已成为现实;的梦想早已成为现实;第二次是互联网的出现,第二次是互联网的出现,PCPC由单机向联网电脑过渡;由单机向联网电脑过渡;如今我们正面临第三次技术革命,其标志是如今我们正面临第三次技术革命,其标志是PCPC向向“3C3CE”E”演变,即演变,即PCPC从单纯的个人电脑或联网电脑向个人计算从单纯的个人电脑或联网电脑向个人计算(ComputingComputing)、通信()、通信(CommunicationCommunication)、控制平台)、控制平台(ControlControl)及娱乐()及娱乐(EntertainmentEntertainment)中心的综合功能转)中心的综合功能转变。变。第一次和第二次革命主要体现为工具和手段的革命,而且第一次和第二次革命主要体现为工具和手段的革命,而且是同内容是同内容-服务相整合的新型应用。服务相整合的新型应用。3C3C是技术是技术-功能性转变,功能性转变,E E是内容是内容-服务性转变。服务性转变。PCPC第三次浪潮最重要的变化就是第三次浪潮最重要的变化就是内容服务的突显,内容服务的突显,PCPC成为人类未来生活中的娱乐和应用成为人类未来生活中的娱乐和应用中心。中心。2二、网络游戏发展史二、网络游戏发展史二、网络游戏发展史二、网络游戏发展史二、网络游戏发展史二、网络游戏发展史“网络游戏网络游戏”也就是人们一般所指的也就是人们一般所指的“在线游戏在线游戏”,是通,是通过互联网进行、可以多人同时参与的电脑游戏,通过人与过互联网进行、可以多人同时参与的电脑游戏,通过人与人之间的互动达到交流、娱乐和休闲的目的。在互联网人之间的互动达到交流、娱乐和休闲的目的。在互联网(局域网)技术出现之前,电子游戏都可以归于单机版游(局域网)技术出现之前,电子游戏都可以归于单机版游戏,即戏,即“人机对战人机对战”游戏,或最多是双人对战游戏。而随游戏,或最多是双人对战游戏。而随着互联网技术的出现,通过连接游戏服务器,上百、上千、着互联网技术的出现,通过连接游戏服务器,上百、上千、乃至上万的游戏玩家同时连线娱乐成为了现实,这就大大乃至上万的游戏玩家同时连线娱乐成为了现实,这就大大增加了游戏的互动性、真实性,丰富了电子游戏的内涵。增加了游戏的互动性、真实性,丰富了电子游戏的内涵。1.1.第一代网络游戏:第一代网络游戏:第一代网络游戏:第一代网络游戏:19691969年至年至年至年至19771977年年年年 背景:由于当时的计算机硬件和软件尚无统一的技术标准,背景:由于当时的计算机硬件和软件尚无统一的技术标准,因此第一代网络游戏的平台、操作系统和语言各不相同。因此第一代网络游戏的平台、操作系统和语言各不相同。它们大多为试验品,运行在高等院校的大型主机上,如美它们大多为试验品,运行在高等院校的大型主机上,如美国的麻省理工学院、弗吉尼亚大学,以及英国的埃塞克斯国的麻省理工学院、弗吉尼亚大学,以及英国的埃塞克斯大学。大学。3 游戏特征:游戏特征:1.1.非持续性,机器重启后游戏的相关信息即会非持续性,机器重启后游戏的相关信息即会丢失,因此无法模拟一个持续发展的世界;丢失,因此无法模拟一个持续发展的世界;2.2.游戏只能在游戏只能在同一服务器同一服务器/终端机系统内部执行,无法跨系统运行。终端机系统内部执行,无法跨系统运行。第一款真正意义上的网络游戏可追溯到第一款真正意义上的网络游戏可追溯到19691969年,当时瑞克年,当时瑞克 布罗米系统编写了一款名为布罗米系统编写了一款名为太空大战太空大战(SpaceWarSpaceWar)的游戏,游戏以八年前诞生于麻省理工学)的游戏,游戏以八年前诞生于麻省理工学院的第一款电脑游戏院的第一款电脑游戏太空大战太空大战为蓝本,不同之处在于,为蓝本,不同之处在于,它可支持两人远程连线。它可支持两人远程连线。2 2第二代网络游戏:第二代网络游戏:第二代网络游戏:第二代网络游戏:19781978年至年至年至年至19951995年年年年 背景:一些专业的游戏开发商和发行商开始涉足网络游戏,背景:一些专业的游戏开发商和发行商开始涉足网络游戏,如如ActivisionActivision、InterplayInterplay、Sierra OnlineSierra Online、StormfrontStormfront StudiosStudios、Virgin InteractiveVirgin Interactive、SSISSI和和TSRTSR等,都曾在这一等,都曾在这一阶段试探性地进入过这一新兴产业,它们与阶段试探性地进入过这一新兴产业,它们与GEnieGEnie、ProdigyProdigy、AOLAOL和和CompuServeCompuServe等运营商合作,推出了第一等运营商合作,推出了第一批具有普及意义的网络游戏。批具有普及意义的网络游戏。4 游戏特征:游戏特征:1 1、网络游戏出现了、网络游戏出现了“可持续性可持续性”的概念,玩的概念,玩家所扮演的角色可以成年累月地在同一世界内不断发展,家所扮演的角色可以成年累月地在同一世界内不断发展,而不像而不像PLATOPLATO上的游戏那样,只能在其中扮演一个匆匆上的游戏那样,只能在其中扮演一个匆匆过客。过客。2 2、游戏可以跨系统运行,只要玩家拥有电脑和调、游戏可以跨系统运行,只要玩家拥有电脑和调制解调器,且硬件兼容,就能连入当时的任何一款网络游制解调器,且硬件兼容,就能连入当时的任何一款网络游戏。戏。19821982年,约翰年,约翰 泰勒和凯尔顿泰勒和凯尔顿 弗林组建弗林组建KesmaiKesmai公司,公司,这家公司在网络游戏的发展史上留下了不少具有纪念意义这家公司在网络游戏的发展史上留下了不少具有纪念意义的作品,如的作品,如凯斯迈之岛凯斯迈之岛。19841984年,马克年,马克 雅克布斯组雅克布斯组建建AUSIAUSI公司(公司(亚瑟王的暗黑时代亚瑟王的暗黑时代的开发者的开发者MythicMythic娱乐娱乐公司的前身),并推出游戏公司的前身),并推出游戏阿拉达特阿拉达特(AradathAradath),),游戏的收费标准为每月游戏的收费标准为每月4040美元,这是网络游戏史上第一款美元,这是网络游戏史上第一款采用包月制的网络游戏。采用包月制的网络游戏。5 3 3第三代网络游戏:第三代网络游戏:第三代网络游戏:第三代网络游戏:19961996年至今年至今年至今年至今 背景:越来越多的专业游戏开发商和发行商介入网络游戏,背景:越来越多的专业游戏开发商和发行商介入网络游戏,一个规模庞大、分工明确的产业生态环境最终形成。人们一个规模庞大、分工明确的产业生态环境最终形成。人们开始认真思考网络游戏的设计方法和经营方法,希望归纳开始认真思考网络游戏的设计方法和经营方法,希望归纳出一套系统的理论基础,这是长久以来所一直缺乏的。出一套系统的理论基础,这是长久以来所一直缺乏的。游戏特征:游戏特征:“大型网络游戏大型网络游戏”(MMOGMMOG)的概念浮出水面,)的概念浮出水面,网络游戏不再依托于单一的服务商和服务平台而存在,而网络游戏不再依托于单一的服务商和服务平台而存在,而是直接接入互联网,在全球范围内形成了一个大一统的市是直接接入互联网,在全球范围内形成了一个大一统的市场。场。子午线子午线5959本应是一款划时代的作品,可惜发行商本应是一款划时代的作品,可惜发行商3DO3DO公司在决策过程中出现了重大失误,在游戏的定价问题上公司在决策过程中出现了重大失误,在游戏的定价问题上举棋不定,面对举棋不定,面对网络创世纪网络创世纪这样强大的竞争对手,先这样强大的竞争对手,先机尽失,机尽失,“第一网络游戏第一网络游戏”的头衔终被的头衔终被网络创世纪网络创世纪夺夺走。走。网络创世纪网络创世纪于于19971997年正式推出,用户人数很快即年正式推出,用户人数很快即突破突破1010万大关。万大关。6 2007 2007 年全球网络游戏产业快速发展,根据艾瑞的研究分年全球网络游戏产业快速发展,根据艾瑞的研究分析,产业规模达到析,产业规模达到8181亿美元,比亿美元,比2006 2006 年增长年增长28%28%7 20002000年中国网络游戏市场规模仅为年中国网络游戏市场规模仅为0.30.3亿元,亿元,20012001年的市年的市场规模为场规模为3.13.1亿元人民币,亿元人民币,20022002年以高达年以高达213.8%213.8%的增加率,的增加率,实现了实现了9.19.1亿元的市场规模,亿元的市场规模,20032003年接近年接近2020亿元,亿元,20042004年年则达到则达到3636亿元。亿元。20072007年网络游戏市场销售收入达年网络游戏市场销售收入达105.7105.7亿亿元人民币,比元人民币,比20062006年同比增长年同比增长61.5%61.5%。81.3D1.3D游戏的类型游戏的类型游戏的类型游戏的类型(1 1)动作游戏)动作游戏 (2 2)冒险游戏)冒险游戏 (3 3)角色扮演游戏)角色扮演游戏(4 4)迷宫和谜语游戏)迷宫和谜语游戏 (5 5)模拟游戏)模拟游戏(6 6)体育游戏)体育游戏 (7 7)战略游戏)战略游戏三、游戏开发基础三、游戏开发基础三、游戏开发基础三、游戏开发基础三、游戏开发基础三、游戏开发基础2.2.游戏平台游戏平台游戏平台游戏平台(1 1)PCPC机游戏机游戏 Windows/Linux/Mac OSWindows/Linux/Mac OS(2 2)家庭游戏机)家庭游戏机 Sony PlayStationSony PlayStation(3 3)PDA PDA 如掌上电脑、手机等如掌上电脑、手机等3.3D3.3D游戏的元素游戏的元素游戏的元素游戏的元素 3D3D游戏在体系结构上包含几个互不相关的元素游戏在体系结构上包含几个互不相关的元素 -引擎引擎 -脚本脚本 -GUI -GUI -模型模型 -纹理纹理 -音频音频 -支持底层支持底层9 游戏引擎提供了游戏开发环境中大多数重要功能游戏引擎提供了游戏开发环境中大多数重要功能 3D3D场景渲染场景渲染 网络链接网络链接 制图制图 脚本编程脚本编程User InputGraphicsAudioEvent,Timing,&SynchronizationScene GraphScriptingObjects&ResourceNetworingFile I/O游戏引擎的元素 脚本脚本 引擎提供的代码可以完成所有艰难的工作,如图形渲染、引擎提供的代码可以完成所有艰难的工作,如图形渲染、网络连接等,我们通过脚本把这些功能组合起来,如果网络连接等,我们通过脚本把这些功能组合起来,如果不使用脚本的编程功能,难以创建复杂而富有特点的游不使用脚本的编程功能,难以创建复杂而富有特点的游戏戏 脚本把游戏引擎各个部分组合起来,使游戏具有可玩性,脚本把游戏引擎各个部分组合起来,使游戏具有可玩性,并使游戏遵循一定的规则。并使游戏遵循一定的规则。10 图形用户界面(图形用户界面(GUIGUI)一般是指各种图象和控制游戏视觉)一般是指各种图象和控制游戏视觉外观并接受用户控制输入的代码的组合。外观并接受用户控制输入的代码的组合。如飞行仪表盘如飞行仪表盘 -游戏主菜单游戏主菜单 -设置和选择菜单设置和选择菜单 对话框对话框 -各种游戏进行中的消息系统各种游戏进行中的消息系统 模型、纹理模型、纹理 游戏中每个角色和场景游戏中每个角色和场景 声音和音乐声音和音乐 声音在声音在3D3D游戏中可以产生前后联系的情趣游戏中可以产生前后联系的情趣 音乐可以调节情绪音乐可以调节情绪 支持底层结构支持底层结构1 1、webweb站点站点 2 2、自动更新、自动更新 3 3、支持论坛、支持论坛4 4、管理工具、管理工具 5 5、数据库、数据库1112 OpenGLOpenGL,Java 3DJava 3D,DirectXDirectX OpenGLOpenGL最初是最初是SGISGI公司为其图形工作站开发的可以独立于窗公司为其图形工作站开发的可以独立于窗口操作系统和硬件环境的图形开发环境,前身是口操作系统和硬件环境的图形开发环境,前身是SGISGI公司为其公司为其图形工作站设计的一个图形开发软件库图形工作站设计的一个图形开发软件库IRIS IRIS GL(GraphicsGL(Graphics Library)Library);其目的是将用户从具体的硬件系统和操作系统中解放出来,可以完全不去理解这些系统的结构和指令系统,只要按规定的格式书写应用程序就可以在任何支持该语言的硬件平台上执行。SGI有针对性地对GL改进,特别是扩展了GL的可移植性,使之成为一个跨平台的开放式图形编程接口,这就是OpenGL。做为图形硬件的软件接口,做为图形硬件的软件接口,OpenGLOpenGL由几百个指令或函数组成。由几百个指令或函数组成。对程序员而言,对程序员而言,OpenGLOpenGL是一组绘图命令的是一组绘图命令的APIAPI集合集合 。利用这。利用这些些APIAPI能够方便地描述二维和三维几何物体,并允许用户对对能够方便地描述二维和三维几何物体,并允许用户对对象实施操作以便把这些对象绘制(象实施操作以便把这些对象绘制(RenderRender)到帧缓冲区)到帧缓冲区(Frame bufferFrame buffer)上。)上。4.3D4.3D引擎引擎引擎引擎13 Java3DJava3D是由是由SUNSUN公司推出的、面向公司推出的、面向InternetInternet的三维动画的三维动画程序语言。程序语言。通过在网页上插入用通过在网页上插入用Java3DJava3D编写的编写的AppletApplet,就能让浏览,就能让浏览网页的用户感受到逼真的三维动画效果。网页的用户感受到逼真的三维动画效果。Java 3DJava 3D是对是对JavaJava的一个用来显示三维图形的扩展。用的一个用来显示三维图形的扩展。用Java 3DJava 3D编写编写的程序可以运行在很多不同类型的计算机或互联网上。的程序可以运行在很多不同类型的计算机或互联网上。Java 3DJava 3D类库提供了比其它多数图形库更简单的接口,但类库提供了比其它多数图形库更简单的接口,但仍有足够的能力制作不错的游戏和动画。仍有足够的能力制作不错的游戏和动画。Java 3DJava 3D建立在建立在DirectXDirectX和和OpenGLOpenGL这些已有的技术上,所以程序运行并这些已有的技术上,所以程序运行并不是你所想像的那样慢。并且不是你所想像的那样慢。并且Java 3DJava 3D中也可以加入使用中也可以加入使用诸如诸如TrueSpaceTrueSpace和和VRMLVRML这些这些3D3D模型包创建的物件。模型包创建的物件。Java3D APIJava3D API是是SunSun定义的用于实现定义的用于实现3D3D显示的接口。显示的接口。3D3D技技术是底层的显示技术,术是底层的显示技术,Java3DJava3D提供了基于提供了基于JavaJava的上层接的上层接口。口。Java3DJava3D把把OpenGLOpenGL和和DirectXDirectX这些底层技术包装在这些底层技术包装在JavaJava接口中。接口中。14 DirectXDirectX是微软发布的一个多媒体是微软发布的一个多媒体 APIAPI,它提供标准接口来与,它提供标准接口来与图形卡和声卡、输入设备等进行交互。如果没有这组标准图形卡和声卡、输入设备等进行交互。如果没有这组标准 APIAPI,您需要为图形卡和声卡的每个组合和每种类型的键盘、鼠,您需要为图形卡和声卡的每个组合和每种类型的键盘、鼠标和游戏杆编写不同的代码。标和游戏杆编写不同的代码。DirectX DirectX 从具体的硬件中抽象出从具体的硬件中抽象出来,并且将一组通用指令转换成硬件的具体命令。来,并且将一组通用指令转换成硬件的具体命令。DirectX DirectX 首次出现在首次出现在 1995 1995 年,当时称为年,当时称为“GameSDKGameSDK”。在其原。在其原始形式中,针对的目标是使用始形式中,针对的目标是使用 C C 和和 C+C+的开发人员。只有在的开发人员。只有在 2002 2002 年年 12 12 月该月该 API API 的第一个托管版本的第一个托管版本 (9.0)(9.0)发布以来,才发布以来,才可以使用可以使用 C#C#或或 VB.NET VB.NET 开发开发 DirectXDirectX。计算机图形学己进入三维时代,三维图形无所不在。计算机图形学己进入三维时代,三维图形无所不在。3D3D游戏、游戏、计算机动画和虚拟现实已经成为近年来计算机图形学的三大热计算机动画和虚拟现实已经成为近年来计算机图形学的三大热门话题,而这三大热门话题的技术核心均为三维图形。门话题,而这三大热门话题的技术核心均为三维图形。由于三维图形涉及到许多算法和专业知识,要快速的开发三维由于三维图形涉及到许多算法和专业知识,要快速的开发三维应用程序是有一定困难的。当前在微机上编写三维图形应用一应用程序是有一定困难的。当前在微机上编写三维图形应用一般使用般使用OpenGLOpenGL、Java3DJava3D或或DirectX,DirectX,虽然虽然OpenGLOpenGL、Java3DJava3D或或DirectXDirectX在三维真实感图形制作中具有许多优秀的性能,但是在在三维真实感图形制作中具有许多优秀的性能,但是在系统开发中直接使用它们仍存在一些缺点系统开发中直接使用它们仍存在一些缺点:15 1 1、都是非面向对象的,设计和操作场景中的对象比较困难。、都是非面向对象的,设计和操作场景中的对象比较困难。2 2、主要使用基层图元,在显示比较复杂的场景时编写程序相、主要使用基层图元,在显示比较复杂的场景时编写程序相对困难。对困难。3 3、没有与建模工具很好的结合。、没有与建模工具很好的结合。4 4、缺乏对一些十分重要的关键技术如、缺乏对一些十分重要的关键技术如LOD(LevelLOD(Level of Detail)of Detail)、动态裁剪等的支持。动态裁剪等的支持。基于以上情况,应用程序开发人员非常需要一个封装了硬件操基于以上情况,应用程序开发人员非常需要一个封装了硬件操作和图形算法、简单易用、功能丰富的三维图形开发环境,这作和图形算法、简单易用、功能丰富的三维图形开发环境,这个环境可以称作三维图形引擎。个环境可以称作三维图形引擎。3D3D引擎引擎 一个封装了硬件操作和图形算法、简单易用、功能丰一个封装了硬件操作和图形算法、简单易用、功能丰富的三维图形开发环境,这个环境可以称作三维图形富的三维图形开发环境,这个环境可以称作三维图形引擎。表明在整个系统中的核心地位。也可以称之为引擎。表明在整个系统中的核心地位。也可以称之为“支持应用的底层函数库支持应用的底层函数库”或者说是对特定应用的一或者说是对特定应用的一种抽象。三维引擎需要解决场景构造、对象处理、场种抽象。三维引擎需要解决场景构造、对象处理、场景渲染、事件处理、碰撞检测等问题。景渲染、事件处理、碰撞检测等问题。16 5.5.游戏引擎游戏引擎游戏引擎游戏引擎 三维游戏引擎是用户用来开发游戏的软件工具和数据文件的集合,三维游戏引擎是用户用来开发游戏的软件工具和数据文件的集合,三维游戏引擎是用户用来开发游戏的软件工具和数据文件的集合,三维游戏引擎是用户用来开发游戏的软件工具和数据文件的集合,是一个处理游戏底层技术的平台是一个处理游戏底层技术的平台是一个处理游戏底层技术的平台是一个处理游戏底层技术的平台!三维游戏引擎技术把游戏程序中三维游戏引擎技术把游戏程序中三维游戏引擎技术把游戏程序中三维游戏引擎技术把游戏程序中可以重复利用的部分,用模组化技术进行规格化与最佳化以利于可以重复利用的部分,用模组化技术进行规格化与最佳化以利于可以重复利用的部分,用模组化技术进行规格化与最佳化以利于可以重复利用的部分,用模组化技术进行规格化与最佳化以利于重用重用重用重用!开发者可以直接使用引擎提供的开发者可以直接使用引擎提供的开发者可以直接使用引擎提供的开发者可以直接使用引擎提供的KJL KJL 来进行游戏开发,从而来进行游戏开发,从而来进行游戏开发,从而来进行游戏开发,从而大大缩短游戏开发时间大大缩短游戏开发时间大大缩短游戏开发时间大大缩短游戏开发时间!现在,三维游戏引擎已经发展为一套由多个子系统共同构成的复现在,三维游戏引擎已经发展为一套由多个子系统共同构成的复杂系统,从建模、动画到光影、粒子特效,从物理系统、碰撞检杂系统,从建模、动画到光影、粒子特效,从物理系统、碰撞检测到文件管理、网络特性,还有专业的编辑工具和插件,几乎涵测到文件管理、网络特性,还有专业的编辑工具和插件,几乎涵盖了开发过程中的所有重要环节盖了开发过程中的所有重要环节!发展三维游戏引擎的目的是要简发展三维游戏引擎的目的是要简化游戏制作的复杂度,缩短开发时间,降低制作成本化游戏制作的复杂度,缩短开发时间,降低制作成本。游戏引擎是用于控制所有游戏功能的主程序,从计算碰撞、物体游戏引擎是用于控制所有游戏功能的主程序,从计算碰撞、物体与物体的相对位置,到接受玩家的输入,怪物的思考以及游戏事与物体的相对位置,到接受玩家的输入,怪物的思考以及游戏事件的触发件的触发,以及按照正确的音量输入声音。在游戏开发人员看来,以及按照正确的音量输入声音。在游戏开发人员看来,游戏引擎是一套封装好的应用程序开发包;在游戏引擎开发人员游戏引擎是一套封装好的应用程序开发包;在游戏引擎开发人员来看,游戏引擎是具备一定功能的软件系统。从游戏玩家的角度:来看,游戏引擎是具备一定功能的软件系统。从游戏玩家的角度:游戏引擎是封装起来、不可见的游戏内部表示游戏引擎是封装起来、不可见的游戏内部表示。1718