3D游戏图形游戏编程概述

2020-03-01 165浏览

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