游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: 茹枫

开发游戏所用到的典型技术总结

[复制链接]

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2004-12-8 10:36:00 | 显示全部楼层

Re: 开发游戏所用到的典型技术总结

游戏就分为3大块

Game_Init( ); // 初始化

while ( true )
{
    Update( ); // 数据处理
    Render( ); // 渲染
}

Game_Destroy( ); // 释放

很多人都热衷于Render块,因为渲染出很漂亮的效果都在这里完成的。也有很多人热衷于Update块,比如很多算法和物理模拟都在这里完成的。

但引擎发展变化很大的,各式各样,很难有统一的标准,而且,每个人达到的需求不同,分类的侧重点不同,对引擎的结构理解也是不一样的。

如果说到3D MMORPG我到可以给一个客户端标准引擎的模块清单
分横向和纵向2块,实际上是一个工具清单

最下面的是

1、动画管理模块
动画的定义,播放,状态,时钟等。一般动画分为骨骼动画和关键祯动画,前者多用于比较复杂的角色,NPC等,后者用于一些比如场景上树,花等的动画,还可以用于一些动画特效。


2、粒子特效生成模块
跟动画管理模块的功能一样,其实也是一个动画,只不过,上面的动画是预先定义的数据,粒子特效的动画是由程序生成的,包含一些比如元素,周期,衰减,数量,速度,加速度,方向,角度等参数,根据不同要求可以取舍,Maya有一个火焰编辑器的工具,可以参考上面的参数。


3、场景管理模块
包含对象管理,剪裁,镜头,碰撞等。
场景除了地形以外,还有很多场景上的对象,比如房子、树、河流等,这些都需要采用一些算法动态管理,同时还要根据镜头的移动进行裁减,避免渲染过多影响效率。

角色在场景上移动的时候要做碰撞检测和移动检测,比如,有的房子能走进去,或者能走到桥的上面,有的河流能在里面走动,但有的房子就不能走进去,有的河流也不能穿过。

场景上除了静态的对象还有动态的对象,这些对象可能是动画,比如花草树木的摇摆,还可能有粒子特效,比如下雪,某处可能炊烟缭绕。


4、对象编辑模块
把一个静态的装备绑定到一个动作上,还有把特效合成到动作上。
每个角色可能有很多很多的装备,但是角色是有动作的,不可能为每个动作给装备也制作动画,装备是没有动画的,需要根据角色的动作给穿在身上的装备用程序来生成动画,不同的装备有不同的动画,比如,帽子随脑袋的摇摆而移动,大刀,长枪可能有自己独特的动作,这都需要进行管理。

还有一些特效,比如很多游戏有踩在脚底下的光环,有的战斗的时候会在武器上出现一个爆炸的特效,很多魔法其实也是特效, 这些都需要进行编辑。

同时特效还有合成叠加的,比如有些魔法先放一光柱然后再发一大球。

6、UI模块
每个游戏都会有界面,界面都类似Window,但Win32的接口都不能用,必须自己定义一些UI对象,类似Window,我们可以定义一个自己的Window基类,然后从上面派生很多窗体,控件,比如常见的按钮,文本框,图片框,列表框,下拉列表框,组合框,滚动条等等。同时需要实现这些对象的一些基本属性方法事件。


5、文件管理模块
包括资源文件和配置文件
游戏根据自己程序的特点,往往资源文件都是自定义的,比如图片,声音,当然也有为了保护产权加密的,在游戏的过程中,有些需要初始化时就载入以提高速度,有的需要动态载入动态释放。当然有的为了提高速度,将很多文件打包放在一起的。(网络游戏我不建议打一个很大很大的包,更新起来比较麻烦,尽量控制包的大小,现代磁盘I/O技术已经相当快了)

同时成千上万的文件为了更新方便和程序载入方便,需要制作一些配置文件,指明路径类型用途等,还有一些系统参数,这些配置文件也需要程序进行分析。


6、脚本模块
对于一些对象表现、状态、位置不能简单用一些配置文件来解决,比如任务,需要定义一些简单的语法描述一些过程,比如分支(if),循环(while),还有跳转(goto)等等,当然还有一些事件(event)。


7、网络模块
这个我就不多说了。


这里少了一个东西就是内存管理模块,之所以没有是因为我的这个引擎这部分不是独立的,所有数据都是面向对象封装的,由父对象集中管理,遵循的原则是随需申请,集中释放。比较好的做法是,所有的对象都从一个基类派生,而且不要定义默认的构造函数。

其实我觉得其他类型的游戏都没有这么复杂,但很多还是相似的,比如2D MMORPG,每个模块功能可能都不一样,但每个模块都要具备。休闲游戏,可能就没有场景管理模块,其他的都应该有。当然为了简化,比如脚本模块就可以省掉。

为什么我说这是纵横分割的呢,因为很多模块是建立在其他模块之上的,比如一些工具,比如动画管理器,任务编辑器,场景编辑器等等

至于说到更底层,比如怎么渲染,怎么处理声音,怎么处理网络,怎么处理鼠标等等,这些不能作为上面的分类,否则就乱了,当然,可以分的更细一点,但我觉得没有什么必要,很多东西不需要进行封装,直接用底层的函数就够了,封装一下反而搞得不伦不类。

248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
 楼主| 发表于 2004-12-8 13:04:00 | 显示全部楼层

Re:开发游戏所用到的典型技术总结


我想谈的是最基本的问题,也就是技术细节。
而不是讨论游戏引擎,虽然也有交集。

而一个新手着手开发游戏,首先面临的问题不是故事,不是信息交互,不是人工智能,而是图形显示。我相信有很多类似的问题,都曾被人提起,但是很多并没有被记录下来。

比如图片的透明度问题。
我以前以为可以用一个pictureBox控件来显示各种透明图片,可是实际上是不行的,图片虽然是透明了,可是控件不是透明的——最多只能显示背景(也就是不能有中间层)。

我想,是不是所有的windows UI ,也就是有窗口句柄的控件,都不能透明。
所以必须得放弃整个windows UI。单单这个就让人很头痛。
游戏的难度很多程度在于,你不得不放弃你所熟悉的环境,而去建立一个粗糙的系统。

248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
 楼主| 发表于 2004-12-8 13:12:00 | 显示全部楼层

Re:开发游戏所用到的典型技术总结


我以前有个想法,就是用标准的图形库,再造一个windows UI系统出来。
比如dx或者更广泛的OpenGL。
首先图形性能上绝对比超越现在的,在者可以在游戏中直接应用。

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2004-12-8 13:45:00 | 显示全部楼层

Re:开发游戏所用到的典型技术总结

可以先去做休闲小游戏(Casual Game),这样容易下手,也比较好理解,可以刨掉一些复杂的算法

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2004-12-8 13:49:00 | 显示全部楼层

Re: Re:开发游戏所用到的典型技术总结

茹枫: Re:开发游戏所用到的典型技术总结


我以前有个想法,就是用标准的图形库,再造一个windows UI系统出来。
比如dx或者更广泛的OpenGL。
首先图形性能上绝对比超越现在的,在者可以在游戏中直接应用。


我也想过,,给Windows加个DX的外壳 [em3]

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2004-12-8 13:52:00 | 显示全部楼层

Re:开发游戏所用到的典型技术总结

我终于自由了,,今后多多来这里交流交流

36

主题

382

帖子

498

积分

中级会员

Rank: 3Rank: 3

积分
498
发表于 2004-12-8 20:08:00 | 显示全部楼层

Re:开发游戏所用到的典型技术总结

你是说游戏框架么?
我们可以先讨论游戏的框架。

9

主题

290

帖子

290

积分

中级会员

Rank: 3Rank: 3

积分
290
发表于 2004-12-9 09:25:00 | 显示全部楼层

Re:开发游戏所用到的典型技术总结

要一口一口吃,呵呵
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-23 14:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表