《游戏编程概述PPT课件》由会员分享,可在线阅读,更多相关《游戏编程概述PPT课件(26页珍藏版)》请在金锄头文库上搜索。
1、游戏编程概述耿卫东陈为浙江大学计算机学院CAD&CG国家重点实验室游戏是什么?游戏程序员看游戏游戏”只是一个具有某种“逻辑”和某些“数据”的结合体游戏的组成游戏的基本部件游戏的运行流程游戏其实就是一个不断按某游戏其实就是一个不断按某种逻辑更新各种数据(画面、种逻辑更新各种数据(画面、声音等)的过程。声音等)的过程。游戏的基本流程只是一个连游戏的基本流程只是一个连续的循环,它不断地按某种续的循环,它不断地按某种逻辑来绘制新的图像,并刷逻辑来绘制新的图像,并刷新画面新画面 Dave Roderick曾形象地把曾形象地把游戏类比为一个带有前置终游戏类比为一个带有前置终端的实时数据库,该终端实端的实时
2、数据库,该终端实时地接受用户(玩家)输入时地接受用户(玩家)输入的各种交互指令,取出相应的各种交互指令,取出相应的数据,并的数据,并“优雅优雅”地将这地将这些数据以各种形式(视觉、些数据以各种形式(视觉、听觉等)展现给用户。听觉等)展现给用户。 游戏开发的基本理念和方法(1)数据驱动理念“逻辑”方面是一款游戏的灵魂,主要由游戏设计人员来负责完成;“数据”方面主要起到描述性和修饰性的作用,主要由程序设计人员来处理。这样的主次关系决定了只有高效地、灵活地处理和对付这些“数据”部分,才能让游戏设计人员把更多的时间和精力花费在“逻辑”部分,游戏编程人员必须把这些“数据处理”工作变得简便和快捷,才能保证
3、游戏开发的成功。游戏开发的基本理念和方法(2)数据驱动的基本策略预先开发专门的数据获取和管理工具。游戏程序设计人员常常需要针对当前游戏的开发,为游戏开发中的艺术创作人员专门设计和实现一系列的“数据”获取和管理工具,包括声音的处理程序、绘画工具等,以提高艺术创作人员的工作效率;游戏程序设计人员在编写代码时,要采用可以很容易修改游戏数据的方式,保证游戏数据的动态可调整性。游戏开发是一个不断修改完善的过程,游戏的设计人员常常需要访问那些影响游戏不同实体行为的数据,并且可以修改这些数据。游戏开发的基本理念和方法(2)保证游戏数据的动态可调整性的技巧和策略保证游戏数据的动态可调整性的技巧和策略 创建一个
4、可以解析文本文件或者命令的子系统创建一个可以解析文本文件或者命令的子系统创建一个可以解析文本文件或者命令的子系统创建一个可以解析文本文件或者命令的子系统它能对游戏的初始化数据它能对游戏的初始化数据/ /参数进行动态地解释和配置,而不是简单地参数进行动态地解释和配置,而不是简单地“启动启动”游戏的运行。游戏的运行。 把游戏程序中的一些常数放置在文本文件中,这样,不需要重新编译就可以很容易地对这些参数进行修改。把游戏程序中的一些常数放置在文本文件中,这样,不需要重新编译就可以很容易地对这些参数进行修改。把游戏程序中的一些常数放置在文本文件中,这样,不需要重新编译就可以很容易地对这些参数进行修改。把
5、游戏程序中的一些常数放置在文本文件中,这样,不需要重新编译就可以很容易地对这些参数进行修改。 所有的数据都不放在代码内。所有的数据都不放在代码内。所有的数据都不放在代码内。所有的数据都不放在代码内。假设所有的数据内容都可以修改,或者将来可能被修改。假设所有的数据内容都可以修改,或者将来可能被修改。 使用脚本来控制游戏的流程。使用脚本来控制游戏的流程。使用脚本来控制游戏的流程。使用脚本来控制游戏的流程。脚本是定义各种行为控制的最简单的方式,它特别擅长定义游戏中顺序执行的步骤,或者各种等待触发的脚本是定义各种行为控制的最简单的方式,它特别擅长定义游戏中顺序执行的步骤,或者各种等待触发的游戏事件。游
6、戏事件。 在编码实现中,时刻牢记把在编码实现中,时刻牢记把在编码实现中,时刻牢记把在编码实现中,时刻牢记把“逻辑逻辑逻辑逻辑”和和和和“数据数据数据数据”分开的核心准则分开的核心准则分开的核心准则分开的核心准则即把复杂的游戏逻辑放在代码中,而把即把复杂的游戏逻辑放在代码中,而把“数据数据”外置,这样可以有效地提高游戏的功能清晰性和可调试性。外置,这样可以有效地提高游戏的功能清晰性和可调试性。 避免重复的数据。避免重复的数据。避免重复的数据。避免重复的数据。如果你需要在不同的游戏场景中表现相同的人物行为,那么,只需要在一个地方实现,而在另一个场景中如果你需要在不同的游戏场景中表现相同的人物行为,
7、那么,只需要在一个地方实现,而在另一个场景中直接调用就可以了。直接调用就可以了。 在大型的复杂游戏开发中,需要另外的编辑工具代替手工编辑方式,方便于产生游戏数据的文本文件,如关卡在大型的复杂游戏开发中,需要另外的编辑工具代替手工编辑方式,方便于产生游戏数据的文本文件,如关卡在大型的复杂游戏开发中,需要另外的编辑工具代替手工编辑方式,方便于产生游戏数据的文本文件,如关卡在大型的复杂游戏开发中,需要另外的编辑工具代替手工编辑方式,方便于产生游戏数据的文本文件,如关卡编辑器、脚本编辑器等。编辑器、脚本编辑器等。编辑器、脚本编辑器等。编辑器、脚本编辑器等。建构这些合适的编辑工具可谓是建构这些合适的编辑
8、工具可谓是“磨刀不误砍柴功磨刀不误砍柴功”,它们将十分高效地加快大型游戏的开发过程,它们将十分高效地加快大型游戏的开发过程。游戏开发的基本理念和方法(3)软件工程中的原型法、中间件方法等都是开发游戏软件的有效方法可玩性测试的原型系统:专门用于检验游戏设计的合理性和用户的可接受程度;用户界面的原型系统:检查玩家如何与游戏进行交互;各个子系统的原型系统:测试该子系统的功能,并可检查各个子系统的交互关系和数据接口;算法测试的原型系统:可用来检查各种算法。尤其是特定领域的一些复杂算法需要通过原型系统进行不断地改进和提高。游戏的测试与调试(1)游戏的测试与调试目标游戏BUG的出现可能是由于程序员的技术问
9、题,也可能是由于策划的设计问题,或者是因为美工的一时疏忽。不管是什么原因,在进行游戏的调试和测试工作时,要尽量把这些问题全部解决。游戏的调试是编程人员的任务,在这个阶段中要找出游戏程序的内在缺陷,并加以修正。采用一般的软件调试和测试方法就可以达到。游戏的测试相当于对游戏设计阶段的BUG的修正,找出游戏设计本身存在的缺陷。游戏的测试与调试(2)游戏的测试人员一般由以下几类人员组成:第一类游戏测试人员是开发队伍的成员。看到自己制作的美工、声效、代码和游戏中使用的关卡,更好地知道如何进行改进;第二类游戏测试人员是传统意义上的游戏测试人员,这些人在游戏进入“alpha”阶段就开始对游戏进行测试。这些测
10、试人员会将一半的时间用来跟踪代码中的“BUG”,并且还会提供一些重要的反馈信息,比如,如何玩游戏、游戏的难度过于简单还是过于困难、游戏的交互控制是直观还是迟钝等;第三类游戏测试人员比较注重第一印象,他们短期参与到项目中,从事玩游戏的工作,然后提供关于游戏的最直接的感觉。关于游戏中不太直观的控制方式、不清晰的信息表示或者游戏难度设置不合理的部分,他们都可以提出建议;第四类游戏测试人员是没有从事当前游戏开发的游戏设计者或者开发人员,会以比其他的测试人员更为独到的方式提出自己对游戏优缺点的见解,他们在某种程度上理解游戏的设计思想,可以分析出项目为何存在缺点,并提出改进方案。游戏的测试与调试(3)游戏
11、中的测试工作可以分为两种:有监督的测试和无监督的测试。有监督的测试一般在游戏开发的早期进行,让设计人员清楚地了解游戏有哪些部分不完整,需要从哪些方面获得反馈信息。在项目开发的后期,如果某个部分刚刚修改过或者返工过,设计人员只需要这一部分的反馈信息,以判断所做的修改是否解决了现有的问题,或者是否会在某个重要方面对游戏造成影响。无监督的测试也很重要,告诉他们开始玩游戏,观察他们做些什么,并且倾听他们的反馈意见,这样可以为设计人员提供关于游戏的全面的反馈意见,这些信息对于解决所有的问题至关重要。游戏的测试与调试(4)游戏在整体上完成后,在进入全面测试阶段的时候,就可以进行游戏参数的调整。参数的调整工
12、作通常包括修改游戏中的某个设置,然后继续玩游戏,以判断修改是否达到了所要求的效果。在进行参数调整工作时,必须密切注意不同的值之间是如何相互作用和影响的。在决定如何对游戏进行参数调整时,没有绝对的规则可以遵循。你必须要全面地观察游戏,以理解比你玩游戏的经验少得多的玩家如何来玩这个游戏,并且还要了解哪些地方可以对他们提出挑战,而又不会不公平或者过于残酷。一旦决定对一个行为参数或效果参数进行调整,那么大刀阔斧地将其加倍或减半,这样在调试时才能清晰地感受到调整前后的变化,有利于快速地确定合适的参数值。游戏开发的基本准则所有的游戏开发都必须为今后的重用作好准备。尽量使用可重用的模块将会最大程度上缩短游戏
13、的开发周期。开发文档不是可有可无的。好的开发文档不仅能为软件重用提供有力的技术保证,而且在游戏开发过程中,它能让其他的开发人员清楚地知道你在干什么。先设计,后编程。游戏的设计和编程实现是明显分开的,因此,游戏的开发一定要先进行设计,后进行编程实现。游戏开发是一个不断进行自我完善的过程,在开始编程的时候,大概只完成了80%的游戏设计工作量,其余的设计工作随着开发进程的推进而逐步地进行精致和完善。灵活有效地安排开发进程。在游戏开发过程中,一定要让每一个游戏编程人员知道他们的开发目标。虽然执著地实施既定的开发计划很重要,但是,更重要的是如何在开发进程落后的时候,重新校准新的开发计划。及时地发现错误。
14、在开发过程中,及时地发现和纠正错误十分重要。时间越长,这些潜在的错误就越容易“发酵腐烂”,最终导致开发的失败。游戏开发小组包括艺术家动画师/造型人员编程人员音效/音乐设计产品开发人员游戏开发所需要的资源通常,游戏开发需要3-5个程序设计人员3-5个艺术设计各种支持(产品开发,市场推广,音效师,音乐家,测试,系统管理员,法律顾问等)将近18个月的开发时间游戏开发基本过程游戏开发的基本过程设计人员:描述游戏内容及其卖点开发人员:如何利用现有资源完成既定目标项目进度安排,充分调动积极性掩盖复杂的细节实现与游戏程序员相关的任务游戏资源开发编辑工具/数据游戏引擎开发考虑注册购买现有的产品具体实现(gam
15、e play)定型测试/修改发布。游戏开发的辅助工具声音数字转换器音乐编辑器、编曲机图形工具:Photoshop等摄像头视频采集卡图形库:包括建模和绘制游戏引擎。游戏引擎技术(1)游戏引擎技术的出现是游戏程序设计技术发展的里程碑之一,并已成为当前计算机游戏开发的关键技术和核心平台。它也是软件工程、专业化分工和游戏产品的独特文化性要求在游戏开发的综合体现,对游戏产业的发展起了巨大的推动作用游戏引擎的意义游戏编程人员就不需要从头做起,而是可以直接调用游戏引擎提供的强大功能,高质量地在很短的周期内开发出新游戏,适应游戏产业的激烈市场竞争游戏引擎促使游戏编程人员进行更为专业化的分工高水平的编程人员注重
16、于性能要求很高的游戏引擎的开发,一般水平的游戏编程人员则利用游戏引擎进行具体的游戏产品的开发游戏引擎技术(2)游戏引擎相当于游戏的底层框架平台。框架平台搭好后,只要往里填充内容就可以了。如果把游戏引擎比拟为一个“游戏操作系统”,那么最终的游戏产品则可比拟为一个个具体地运行在“游戏操作系统”上的应用程序。游戏引擎已经发展为一套由多个子系统共同构成的复杂系统从建模、动画到光影和粒子特效,从物理系统、碰撞检测到文件管理、网络流量控制等,包括专业的编辑工具和插件,几乎涵盖了游戏程序设计过程中的所有重要环节游戏引擎技术(3)游戏引擎的终极目标游戏编程的透明化,让游戏的创意人员也能直接实现游戏根据创意,直
17、接生成代码著名的商用游戏引擎Doom QuakeUnrealLithTech 游戏引擎技术(4)Ogre引擎开源面向对象抽象底层图形库(D3D,OpenGL)灵活的渲染引擎(不是一个完整的游戏引擎)大量采用C设计模式以插件的形式方便扩展OGRE的功能提供了抽象的渲染API,封装了底层的图形库。游戏引擎技术(5)Ogre引擎的学习(一个月的时间)读Ogre的源代码,学习Ogre的设计和编码方式解析Ogre的结构和功能熟悉API调用尝试改变Ogre的demo游戏程序员的基本素质要求软件设计的基本技能丰富的知识面 软件工程、数据结构、数据库、算法设计等2D/3D图形学、人工智能、音频/视频处理 、人
18、机交互、计算机网络坚实的数学和物理基础:线性代数、欧氏几何、牛顿物理学经验和能力综合运用各片断技术的经验不断学习新技术的能力游戏的开发常常受限于运行时间或者存储空间等资源因素,但却处处追求高效率和高性能。其他游戏引擎,如DirectX,OpenGL, Ogre及其他商用游戏引擎一些数据处理和建模工具,如Photoshop,Maya,3DS等。给游戏程序设计员的忠告游戏编程人员还需要不断地学习游戏开发特别强调创新,每次开发的游戏都会不一样,而且游戏编程环境和技术也在不断的发展变化中。只有善于从不同的方面(同事、网上的游戏编程资源、)去学习,不断地提高自己的游戏编程能力,才有可能使自己在游戏业界立足争取获得一个大学文凭。要成为一个游戏编程人员,大学文凭并不是必须的,但是,一个大学文凭能在找工作时给你很多有益的帮助。Q&A?