Flyue's游戏引擎设计方案
Flyue’s游戏引擎设计方案在这个方案里我不会详细讲具体的代码,只会告诉大家在一个游戏里面需要哪些模块,具体的代码还得靠大家自己写。
每个人负责一个或多个模块,要充分利用现成的资源,所负责的模块代码要有可移植性、可重复利用;每个类的代码都要明确公有、私有和保护属性;运算速度要快,并且没有内存泄露。对负责的模块要做一个测试的程序来反复调试,直到没有问题后再交付使用。
一、引擎的基石
1.CList - 快速双向链表。除了提供链表应有的功能外,还可以排序、互换数据、枚举结点、获得指定位置的结点数据等。在后面的所有需要存储数据的地方都要用CList来存放该数据的指针。(已实现)
2.CTimer - 超高精度计时器。可以开始/停止计时、锁定帧率、计算帧率。具体用QueryPerformanceCounter实现,其精度达到了系统级。(已实现)
3.函数HitBall、HitBox分别用于碰撞球检测、碰撞盒检测。
二、引擎代码
1.CDXGraphics - 图象输出。用于管理Direct3D9数据,纹理(图片)数据和字体数据。为图象输出、文字输出提供接口,在后面的需要绘图的地方都要用此对象来绘制。(已实现)
2.CPicClip – 图象碎片管理模块。在游戏里需要把一张大的图片分割成许多小块,并为其编号。CPicClip就是用来管理这些图象碎片的。(已实现)
3.CSprite – 精灵动画。用于管理和播放帧动画。提供了添加、删除帧,绘制到屏幕、开始播放、停止播放的接口函数(已实现)
4.CSpriteManager – 精灵管理模块。用于管理游戏里的所有CSprite对象,可添加、删除、改变绘图顺序、绘制所有精灵、响应用户的消息等功能。
5.用户控件:以下所有的控件类都由CSprite派生,并可以由CSpriteManager象CSprite一样管理。每个控件类都可以设置回调函数来处理用户的操作。
CUIButton 按钮
CUIEdit 输入框
CUIScroll 滚动条
CUIForm 可拖动对象
CUIProgress 进度条
CUISlider 滑块
三、声音
1.CAudio – 用来管理背景音乐、游戏音效。可以播放、暂停、停止音乐,可以设置、获得音量。
四、游戏资源管理
1.CResManager - 资源管理模块。游戏中的资源文件(如图片、音乐等数据)都不能暴露在外面,需要把其打包,做成一个资源包。以后除了此模块之外的其他模块都不可以直接进行文件操作,都需要通过此模块所提供的读取、添加、删除、重命名、枚举存在的数据等接口来获取资源。
五、输入系统
1.CKeyboard - 键盘。管理DirectInput8键盘对象,用于检测哪些按键被按下了。
2.CMouse – 鼠标。管理DirectInput8鼠标对象,用于检测鼠标的点击、移动等事件。
测试的程序:
D3DTest.rar
(509.99 KB)
[[it] 本帖最后由 flyue 于 2008-6-4 18:01 编辑 [/it]]