1、“ 星际世界 ” 网络游戏开发初探 1 “ 星际世界 ” 网络游戏开发初探 摘要 网络游戏开发是当前计算机 行业 的热门话题之一。 网络游戏开发需要综合 文学, 美术,音乐 ,声学 和计算机技术 等多门学科, 开发难度大,风险高,开发技术日新月异 ,一旦获得成功,将给开发方带来巨大的利润 和宝贵的技术、项目经验。 当 前国内许多软件企业投身网络游戏 开发,力求打造拥有自主知识产权的 中国自己的网络游戏。本文以毕业设计项目为 基础 ,简要分析了当前国内网络游戏的发展状况, 根据自身工作对 DirectX 中 部分技术做了简要的 介绍 ,描述了 自己负责 的 部分 的 解决方法 ,过程 和体会。
2、关键 词 网络游戏 DirectX DirectSound “ 星际世界 ” 网络游戏开发初探 2 Abstract Nowadays, developing the network games is one of the hottest topics in the computer fields. Developing network games requires a lot of knowledge including comprehensive literature, art, music, IT and so on. Developing the network games, you
3、have to take a high risk on account of its difficult developing technology and changing rapidly skills. But once you succeed, it will bring a great profit, valuable technologies and project experience the developers. Currently many enterprises in China devote themselves to developing the network gam
4、es, aiming to possess the property right of the network games. Taking this graduating design project as a background, I take a brief analysis of the developing situation of the network games in China and the correlative part of DirectX based on my job, and describe the method, process and realizatio
5、n of the task. Key words Online game DirectX DirectSound “ 星际世界 ” 网络游戏开发初探 3 目 录 1 项目概述 . 4 1.1 项目背景网络游戏引述 . 4 1.1.1 网络游戏的定义 . 4 1.1.2 网络游戏分类 . 4 1.1.3 网络游戏的特点 . 5 1.3.4 何以吸引 2000 万玩家 . 5 1.1.5 当前网络游戏的发展状况 . 5 1.2 项目描述 . 5 1.2.1 项目需求描述 . 6 1.2.2 项目的体系结构 . 6 2 关键技术介绍(图像处理,音效添加) . 7 2.1 DirectX 概述 . 7
6、 2.1.1 DirectX 简介 . 7 2.1.2 DirectX 适于游戏开发的特性 . 8 2.1.3 DirectX9.0 组件构成 . 8 2.2 DirectDraw . 9 2.2.1 DirectDraw 绘图原理 . 9 2.3 DirectSound . 10 2.3.1 DirectSound 概述 . 10 2.3.2 音频 播放原理 . 10 2.3.3 3D 音效产生原理 . 11 2.4 DirectMusic . 12 2.4.1 DirectMusic 简介 . 12 3 实现 . 13 3.1 工具 . 13 3.2 游戏形象处理 . 13 3.2.1 获
7、取游戏形象 . 13 3.2.2 用连续的位图实现动画 . 13 3.2.3 用 DirectDraw 实现动画 . 14 3.3 声音添加 . 14 3.3.1 获取音频文件 . 15 3.3.2 实现声效子系统 . 15 4 项目总结和改进计划 . 16 4.1 总结 . 16 4.2 改进计划 . 16 5 项目体会 . 16 致谢语 . 16 参考文献 . 17 “ 星际世界 ” 网络游戏开发初探 4 引言 近年来 从 各类媒体上频繁出现 的 “网络游戏玩家” 这个新词上 ,网络游戏在全球 的风靡程度可见一斑。在网络游戏高速发展的过去六年里,网络游戏已 在国内带动起一整条产业链的发展,
8、但与此同时国内的网 络游戏市场依然被美,日,韩三国所占据。网络游戏开发难度大,风险高,需要汇集项目管理,编剧,游戏策划,角色设计,图形设计,音效制作,程序设计等各方面的顶尖人才。出于对网络游戏的喜爱,以及对其制作过程的好奇,我们将毕业设计项目定为网络游戏的试探性开发,希望通过亲身实践,体验网络游戏 的 开发过程,同时学习并实践当前较为流行的网络游戏制作技术。 1 项目 概述 1.1 项目背景网络游戏引述 1.1.1 网络游戏的定义 网络游戏又被称为 MUD,英文 Multi-User Dungeon 的缩写。 2003 年度 中国网络游戏产业研究 报告 将其定义为 利用 TCP/IP 协议,以
9、 Internet 为依托,可以多人同时参与的游戏项目。 1.1.2 网络游戏分类 按游戏运行平台的游戏分类 PC 网络游戏 视频控制台的网络游戏 掌上网络游戏 交互电视( iTV)网络游戏 按照游戏内容架构的游戏分类 角色扮演类( MMORPG) 比较著名的有奇迹、 A3 策略类或战略类( MMOSLG) 比较著名的有魔兽 争霸、 星际争霸、 帝国时代 II 动作类( MMOACT) 比较著名的有反恐精英、三角洲 冒险类( MMOAVG) 模拟类游戏( MMOSG) 棋牌类休闲类 比较著名的是联众世界 运动类( MMOSPT) “ 星际世界 ” 网络游戏开发初探 5 赛车类( MMORCG)
10、 1.1.3 网络游戏的特点 有特定的游戏服务器和至少 1 台以上的游戏电脑终端,之间通过网络连接起来;可以容纳 1 个以上的玩家参与同一个游戏;具有强大的互动性 。 1.3.4 何以吸引 2000万玩家 感官冲击 游戏本质是娱乐性与可玩性。近年来成熟的 2D 游戏和层出不穷的 3D 游戏(典型的要属 奇迹 ),无一不为玩家展现绚丽华美的游戏场景,更加逼真的人物造型 甚至 是 与真人并无二致的人物表情,玩家可以 通过 人物造型 张扬自身 个性。 所有这些 加上完美震撼的音效,市面上的许多游戏已经能带给玩家好莱坞大片般全方位的感官冲击。而比好莱坞大片更胜一筹的是,这部游戏大片完全由玩家自身导演和
11、主演。 游戏情节的不确定性 与传统单机版 pc 游戏相比,网络游戏只给玩家提供一个大背 景,缺乏明确的故事情节,没有明确的任务,但也正是这样的不确定性和开放性, 使得游戏充满变数,玩家可以完全根据自己意愿演绎游戏。 模拟世界和虚幻社会的魅力 交互性和虚拟社会是网络游戏最大的卖点。许多 RPG 类型的网络游戏,都成功的构建了一个虚拟社会,在这个社会中有着完善的职业系统,玩 家可以尝试不同的角色,突破现实社会中角色的局限性,发掘自身的潜能。在某种程度上实现自己的梦。 在 RPG 网络游戏中,除了 NPC 之外的角色背后都是现实中一个真实的人,玩家在游戏过程中不 像 过去是和电脑进行交互 , 而是与
12、和其自身一样 的真实 的人进行思想和智慧的交锋。可以说网络游戏为地域上相隔甚远的玩家提供一个交流的舞台。 通过游戏和游戏形象背后的玩家交流沟通,也是众多人选择网络游戏的原因之一。 网络游戏中不同玩家可以通过联盟完成特定任务,(以 CS为代表), 这 使大多数人性格中的冒险成分得到满足。 人们通过联盟 的协作完成任务而取得的荣誉感和满足感也弥补了现实中的缺憾。而这种虚拟状态下的协作在 现实中也有所延续,比如因网络游戏而出现的“战队”这种组织形式, 网络游戏 能使 战队 成员之间有更多的了解,更加默契和融洽。 1.1.5 当前网络游戏的发展状况 2003 年 中国网络游戏销售收入增 加 45.8%
13、达 13 亿元 , 2004 年网络游戏用户预计达到2347.7 万,网络游戏的发展带动了通信,媒体等一整条网络游戏产业链的发展。 网络游戏产业规模达 30.8 亿,带动 周边产业产值总计 340.9 亿 。但与此同时,网络游戏产品除棋牌类外,主要是海外 产品占统治地位 。 中国在网络游戏的开发上和韩,日,美等国家还存在不小的差距。 1.2 项目描述 “ 星际世界 ” 网络游戏开发初探 6 1.2.1 项目需求描述 能够实现一般网络游戏最基础的功能,包括生成地图;生成代表玩家 的 游戏形象,并提供多种游戏形象供玩家选择;生成并控制 NPC 的行为。所有游戏角色可以进行 8 个方向 的行走以及
14、8 个方向的攻击动作。支持多玩家联机对战。玩家可以攻击其他种族的其他玩家,也可以攻击游戏生成的“怪物” ,“怪物”受到攻击会进行反击,遭受攻击的游戏角色会显示“失血” ,失血超过游戏限定 时 角色死亡,游戏角色死亡后自动复活,但相关属性改变。 游戏能够产生简单的音效。 1.2.2 项目的体系结构 客户端 : 实现游戏登陆、游戏网络连接、游戏活动场景的展现,游戏操作平台,游戏人机交互的界面, 用户 聊天 的 输入和显示,声效系统等。 客户端子系统定义如下: 显示子系统: 显示人性化的界面,表达的内容简单易懂 。显示游戏画面,显示 游戏形象根据用户操纵做出的相应动作。 逻辑子系统: 设置 客户端程
15、序内部各个类的逻辑关系。 设置 全局类变量,以利于公共信息的传输。封装好每一个类,实现信息屏蔽。 控制子系统: 支持通过键盘和鼠标 控制游戏角色的行为, 进行 游戏 。 “星际世界 ” 客户端 地图服务器 聊天服务器 显示子系统 逻辑子系统 控制子系统 用户角色维护 怪物角色维护 网络器 数据库 网络子系统 客户信息管理子系统 声效子系统 网络子系统 “ 星际世界 ” 网络游戏开发初探 7 网络子系统: 网络子系统负责客户端与服务器的信息交换。 声效子系统: 为游戏添加声音效果。 地图服务器 负责接收客户端的网络连接,维护客户端角色信息, 维护地图上的怪物信息,使网络上各种信息实现同步。同时负
16、责更新用户角色的信息,在恰当的时候更新角色的数据库, 使数据库中存放的是角色的最新数据内容。包括以下几个子系统: 用户角色维护系统: 负责维护用户角色数据,如 当有新用户 登陆时发送角色信息给 所有客户端,当用户 角色被攻击时 , 发送被攻击信息给该客户端,使 网络中所有客户端 的数据同步。 怪物角色维护系统: 维护电脑产生的怪物表,让它们在地图上任意的走动,然后通过网络连接通知更新客户端的怪物,使怪物的信息实现同步。 网络子系统: 负责与客户端的网络通讯,通过通讯协议与客户端通讯,交换信息,并根据交换的信息即时更新角色的数据,并通知网络上其他的用户,实现同步。 聊天服务器 实现多人游戏时的聊
17、天信息转发,聊天信息由客户端界面输入,通过网络连接传入聊天服务器,再由聊天服务器 广播给 每一个在线用户,显示在他们客户端的界面聊天输出框中。 客户注册系统 用户登陆游戏需要帐 戶 和密码,客户注册系统 负责 收集新用户帐 户 ,密码的相关资料,并进行相关信息维护。 2 关键技术介绍(图像处理,音效添加) 2.1 DirectX概述 2.1.1 DirectX简介 DirectX 是微软发布的一组 用于开发游戏和各类高性能 多媒体应用程序的 API。它提供对2D、 3D 图形以及音效,输入设备和网络应用的支持。 DirectX 中包含的各类与制作多媒体功能相关的组件( Component),能
18、够为开发者提供“ 星际世界 ” 网络游戏开发初探 8 开发 实时的 、 高质量 的 应用程序所需要的各种资源。 它 的 出现 为 发展下一代多媒体应用程序和电脑游戏 提供了强有力的支持 。 2.1.2 DirectX适 于游戏开发 的特 性 为软件开发者提供硬件无关性 微软开发 DirectX,其最主要的目的之一是促进在 Windows 操作系统上的游戏和多媒体应用程序的发展。在 DirectX 出现以前,游戏开发者 需要考虑如何使程序适应各种不同的硬件设备。 DirectX 发布后,游戏开发者 可以获益于 Windows 平台的设备无关性,而又不失去直接访问硬件的特性。 DirectX 在硬
19、件设备和应用程序之间提供了一套完整一致的接口,以减小 安装和配置时的复杂程度,并且可以最大限度的利用硬件的优秀特性。通过使用 DirectX所提供的接口, 游 戏 开发者可以尽情的利用硬件所可能带来的高性能,无需考虑那些复杂而又多变的硬件执行细节。 直接存取内存 目前的显卡大部分都内置了 8 32MB 的显存, DirectX 中的 DirectDraw 可以直接存取这些内存,并利用“ flip”的功能将图形显示的性能发挥得淋漓尽致。 支持硬件加速 DirectX 支持硬件加速功能,当 DirectX 对象建立时,程序自己会去查询可使用的硬件,程序员不需要为玩家的计算机分配烦恼,不论是显卡,声
20、卡,还是输入设备,外围设备,若程序查询到可使用的硬件,则由硬件 HAL( Hardware Abstraction Layer)执行功能;否则由软件 HEL( Hardware Emulation Layer)自动模拟。 网络连接功能 DirectPlay 可以 简化 多人联机游戏 的 开发 ,联机方式可以是局域网连接,远程拨号连接,并支持各种通信协议。 2.1.3 DirectX9.0组件 构成 DirectX 9.0 SDK 为基于 Windows 平台的应用程序提供了以下几个组件 : DirectX Graphics: 将以前版本中 DirectDraw 和 Direct3D 组件合并,
21、用于图形编程。这个组件包含 Direct3D 扩展实体库( D3DX) ,可以简化许多图形编程工作。 DirectDraw: 通过直接访问显示硬件来提供高级的图象处理能力。 Direct3D: 为主流的桌上型计算机和 Internet 用户提供实时的、交互的 3D技术。 DirectSound: 提供了软硬件的低延迟声音混频( low_latency sound mixing)和回放( Playback),硬件加速,以及直接访问音频设备的能力。用于开发高性能的可 播放和捕捉音频的音频应用程序。 “ 星际世界 ” 网络游戏开发初探 9 DirectPlay: 明确的提供了通用环境连接能力( ge
22、neralized communication capabilities),来简化应用程序之间的通讯服务。对网络游戏 开发提供 的 强大的 支持 。 DirectInput: 简化 应用程序访问鼠标、键盘和操纵杆设备的能力。对多种输入设备提供支持,包括对力反馈技术的支持。 DirectSetup: 一套简单的 API 提供 DirectX 的自动安装。 DirectShow: 提供对媒体流高质量的捕捉和回放。 DirectX Media Object: 支持数据流对象的使用,包括视频,音频编码和解码。 Microsoft DirectMusic: 为基于 WAVE,MIDI 格式的声音文件以及
23、 DirectMusic Producer 产生的动态资源提供完全的 解决 方案。 2.2 DirectDraw 2.2.1 使用 DirectDraw绘 图 原理 DirectDraw 实现动画的原理和手工制作动画片的原理是相同的。 DirectDraw 把绘有连续动作的位图存储在“绘图页” ( Surface) 中, 通过 快速的 “贴图”和“ 翻 页( flip)实现动画效果。 “ 绘图页”( Surface)是一块显存或 存储位图的内存。 DirectSound 定义三种类型的 “绘图页”: 主绘图页( Primary Surface): 显存,在主绘图页中 的 图形将显示在屏幕中。
24、后缓冲区( BackBuffer): 在后缓冲区中 贴上位图,当利用翻页的方式切换 后 ,此绘图页就变成主绘图页。 幕后内存区( Offscreen Plain): 用来暂存要使用的位图的绘图页 。 三种缓冲区关系图示: 通常 把位图贴到后缓冲区 ( BackBuffer) ,再利用“翻页 (flip)”的方式,绘出要显示的位图内容, 这个过程和 不使用 Dir etDraw 时,先在一个内存 DC 中完成所有绘图动作,再将其内容贴到显像 DC 中 一样, 可以避免产生闪烁现象 。 贴图( Bit, BitFast) Offscreen Plain Offscreen Plain Offscr
25、een Plain Offscreen Plain Primary Surface Back Buffer Back Buffer Back Buffer 暂存所有要使用的位图 “ 星际世界 ” 网络游戏开发初探 10 在翻页时,无需移动任何缓冲区中的位图数据,只需移动指针将 Back Buffer 设定为Primary Surface, 便可显示其中的图形内容,速度上提高很多。 2.3 DirectSound 2.3.1 DirectSound概述 可以实现低延迟(小于 20微秒)的声音播放,为应用程序提供高水平的对硬件资源的控制。 功能: 播放 wave 格式的音乐 同时播放多种声音 为高
26、优先级的声音优先分配硬件缓冲 在特定的 3D 环境中定位声音 增加回声合唱特殊音效,动态改变效果参数 从话筒或其他输入设备捕捉 WAV 声音 在游戏中添加声音需要用到的主要的 DirectSound 对象: DirectSound 代表一个物理硬件声音设备 DirectSoundBuffer 代表一个音频数据流 DirectSound3DBuffer 代表位 于 3D空间的一个音频数据流 DirectSound3DListener 代表位于 3D 空间的一个音频接收器 DirectSoundNotify 为发布 DirectSound 事件应用程序提供的机制 2.3.2 音频 播放原理 建立一个 DirectSound 对象返回指向 IDirectSound 界面 的 指针代表默认的回放设备。DirectSound 对象可以屏蔽计算机音频设备的差异,通过 DirectSound 对象可以 获取 音频硬件属性。 使用 从 缓冲区 作为 存储音频文件的区域,使用主缓冲区 作为 播放声音,产生混音的区域,翻页 翻页 (flip) (flip) Primary Surface Back Buffer Back Buffer Primary Surface Primary Surface Back Buffer