当罗梅洛走进房间时,卡马克一如往常坐在显示器前优化着下一代图像引擎。
他的房间比以前大了不少,也更干净整洁,但仍然是那么简朴无华
C++博客
|
首页
|
发新随笔
|
发新文章
|
联系
|
聚合
|
管理
Sumreen(GAL GAME)引擎框架
因为东西挺多的,所以这里只讲基本的构架,即怎么构成这个程序,具体的细节问题后面一个一个再实现
首先要声明一点,我的代码很丑的,因为自己以前没有学习过什么GAL GAME引擎相关方面的知识,只是想着如何实现一般GAL GAME的功能就自己YY出这个引擎了。
这个引擎图形方面使用Direct3D,音频方面使用Fmod Sound System,IDE使用Visual Studio 2008,并使用了DirectX SDK中的DXUT
声明:Fmod SoundSystem用于免费的程序是免费的
FMOD Sound System, copyright (c) Firelight Technologies Pty, Ltd., 1994-2007.
这一篇不会讲任何细化的东西,只会解析程序的结构
1、流程
先说整个程序的流程。
(1).注册窗体一类的最底层的事,DXUT已经帮你干掉了
(2).初始化Direct3D以及Fmod,载入标题界面
(3).根据不同的选择,进入不同的模式,比如载入游戏、游戏设置、离开游戏、重新开始游戏等
(4).进入游戏后,读取脚本,解析,然后做相应的事。
流程很好理解,除了界面外,最主要的就是脚本问题了。
2、脚本
GAL GAME的脚本解释工作应该算是所有类型游戏中最简单的之一,因为整个流程只会出现一个线程,不会存在多线程操作。
于是我们可以解释运行这个脚本,于是将所有的问题归总起来,就会想出这个结构:
用一个总管理器(后面我们叫做AManager)来管理所有的部分,包括脚本解释器、对话框、立绘管理、场景管理、场景效果、音频、变量、视频等所有游戏主流程会用到的东西。
然后读进脚本,交给脚本解释器,脚本解释器返回一个可执行命令,AManager根据这个命令来把任务下发给其他的东西。比如有一个立绘操作的命令,就交给立绘管理器,立绘管理器中自己处理。若有一个声音操作,就交给音频管理器,音频管理器中就自己处理播放音频的问题。其他的也都是这样。
工作原理知道了,那么接下来就是确定有哪些需要的东西了。
3、各种管理器
这些管理器从AManager处获得命令,并开始工作,那么我们需要哪些东西呢?
(1).对话框文字管理器
这个东西接受关于文字的命令,然后进行解析并演出。
(2).立绘管理器
这个东西接受关于立绘的命令,管理立绘的显示与消失,还有立绘的动作等。
(3).场景/CG管理器
这个东西接受关于场景和CG的命令,因为CG往往是一张整个呈现在屏幕上,跟场景的出现一样,于是可以一起处理。
(4).屏幕特效管理器
这个东西接受关于屏幕特效的命令,也就是例如整个屏幕淡入淡出、百叶窗等常用的切换场景的效果。还有就是屏幕震动、旋转等特效。
(5).音频管理器
这个东西接受关于音乐和音效的命令,具体还有系统音量设置等附加的东西,用来播放、停止音乐和音效。
(6).变量管理器
这个东西接受关于变量的操作,所谓的变量也就是用来记录好感度、玩家选项的选择等可变的东西,可以访问变量、改变变量等。
(7).视频管理器
这个东西接受关于视频的命令,其实也就是OP、过场动画、ED等,没什么特别的。
(8).存档管理器
这个东西跟脚本没关系,但是放在这里是为了方便读取各个需要存储的东西并存储以及读取。
大概就是这些东西,当然,根据你的游戏的特殊的地方,可以自己加东西上去,比如小游戏什么的。
4、脚本命令
脚本命令可以自己设计,当然,总的前提是让脚本演出更加方便以及流畅,也要考虑写脚本的清晰度与复杂度。
当然有个考虑,就是在立绘、场景等名称管理时,若用路径名就牺牲多了,可以考虑用一个总的defines.script文件来记录各种宏定义。比如define BGM01 music\hahahahhahahaheihehiehiehie.mp3后,在播放这个音乐时就只用BGM BGM01 ;就行了
以下节选Sumreen圣诞版DEMO,海边演出的脚本。具体的命令可以自己琢磨,各种命令应该比较清晰,只是参数不同。
当然,我也提供了Sumreen脚本说明文档,下载:
/Files/CK985/SumreenScriptSDK.rar
从下篇开始大概会慢慢开始讲各种管理器的实现方法吧。。恩。。工程量好庞大。。慢慢填坑吧。。
1
delay
100
;
2
3
bgm BGM04 ;
4
unlockmusic BGM04 ;
5
6
text 梦中,\b\n我掉进了一个深不见底的洞穴。\b\c洞穴完全没有底,\b\n我一直在下落,\b\n下落……\b\c我想抓住什么东西,\b\n但是四周只有黑暗。\b\c话说回来,\b\n既然只有黑暗,\b\n我怎么能判断这是个洞穴呢?\b\c思考这些是没有意义的,\b\n就在我不断下落的时候……\b\c\e ;
7
8
alphain 圆开
10
;
9
settalker 苏仪 ;
10
screenmove 横向抖动
20
0
0
0
0
;
11
text 啊!\b\c\e ;
12
13
notalker ;
14
text 我醒了。\b\c\e ;
15
settalker 苏仪 ;
16
text 呼……\b\c\e ;
17
18
notalker ;
19
text 怎么会做这种梦呢?\b\c我大口大口地喘气,\b\n背后完全湿了。\b\c太阳已经下山了,\b\n夏日的暑气被夜晚的凉爽取代了。\b\c从窗口能看到一片干净的星空。\b\c天空并不是完全的黑,\b\n而是一种近似深蓝色的背景上点缀着银色的光点。\b\c看来明天又是晴天了。\b\c\e ;
20
settalker 苏仪 ;
21
text 哈欠……\b\c\e ;
22
23
alphaout 纯黑
10
;
24
delay
26
;
25
bg 客厅开灯 ;
26
delay
40
;
27
alphain 横板拉开
60
;
28
delay
60
;
29
30
notalker ;
31
text 伸了个懒腰之后,\b\n我走下了楼梯。\b\c白天没什么感觉,\b\n但是到了晚上,\b\n立刻感觉到只有一个人的房子显得尤其的大。\b\c让人不免产生孤寂的感觉。\b\c\e ;
32
settalker 苏仪 ;
33
text 好无聊啊……\b\c\e ;
34
notalker ;
35
text 对了,\b\n到海边去看看吧。\b\c就在这里不远,\b\n不就是沙滩吗?\b\c\e ;
36
37
nobgm ;
38
39
alphaout 纯黑
10
;
40
delay
26
;
41
bg 玄关开灯 ;
42
delay
40
;
43
alphain 横板拉开
30
;
44
delay
30
;
45
46
settalker 苏仪 ;
47
text 钥匙……\b钥匙……\b\c\e ;
48
notalker ;
49
sound sound
/
SE_0007.wav ;
50
alphaout 纯黑
10
;
51
delay
26
;
52
53
text 于是,\b\n我锁好门,离开了家,前往海边。\b\c\e ;
54
55
bgm BGM03 ;
56
unlockmusic BGM03 ;
57
58
bg 十字路口天黑 ;
59
delay
40
;
60
alphain 开窗户
30
;
61
delay
180
;
62
63
delay
30
;
64
65
text 天空已经彻底暗了下来。\b\c从家到最近的海滩,需要走过一座新修的桥。\b\n海边也有许多小吃店,\b\n不过晚上一般都会冷清许多。\b\c本来家这边就没多少车,\b\n到了晚上更是如此。\b\n路上除了路灯和红绿灯之外没有别的东西。\b\c\e ;
66
67
text 在凉爽的海风的催促下,我加快了脚步。\b\c\e ;
68
69
alphaout 横板拉出
50
;
70
delay
50
;
71
bg 沙滩天黑 ;
72
bgsound sound
/
SE_0008.wav ;
73
delay
100
;
74
screenmove 聚焦
1
200
150
400
300
;
75
alphain 横板拉开左
60
;
76
delay
90
;
77
screenmove 聚焦
60
0
0
800
600
;
78
delay
70
;
79
80
text 出现在面前的就是蔚蓝的海。\b\c\e ;
81
settalker 苏仪 ;
82
text 呼!\b\n真不错……\b\c\e ;
83
84
notalker ;
85
text 晚上的海滩几乎没人。\b\c这一段海滩属于私人用地,\b\n白天也只有负责清理海滩的工人,\b\n因此晚上更是安静的很。\b\c我找了块比较干的地方,\b\n一屁股坐了下去。\b\c海风吹在脸上,\b\n略带咸湿的感觉。\b\c上大学以来,\b\n还是第一次单独来海边啊……\b\c\e ;
86
87
text 我开始享受着海滩上那种独有的特别的舒适感。\b\n月光下,\b大海,\b沙滩,\b海风的触感\b及潮汐的声音\b构成了天然的协奏曲。\b\c\e ;
88
screenmove 纵向抖动
5
0
0
0
0
;
89
90
text 等等,那边的海滩上好像有人?\b\c\e ;
91
dim 琉璃好感度 ;
92
dim 琉璃登场 ;
93
change 琉璃登场
0
;
94
95
#bgm BGM03 ;
96
#unlockmusic BGM03 ;
97
98
text 距离比较远,\b\n看的不是很清楚。\b\c但是从身形来看,\b\n应该是一名女性。\b\c她似乎在找什么东西,\b\n低着头用脚划拨着沙子,\b\n神情专注的很。\b\c\e ;
99
100
101
text 要不要过去问问?\b\c\e ;
102
103
choice 是否过去问琉璃
2
过去问问 算了 ;
104
105
ife 是否过去问琉璃
=
1
106
add 琉璃好感度
1
;
107
change 琉璃登场
1
;
108
text 过去问问吧。\b\c\e ;
109
text 我起身向她走去。\b\c\e ;
110
settalker 苏仪 ;
111
text 那个,有什么能帮你的吗?\b\c\e ;
112
notalker ;
113
114
imgin 琉璃登场
0
0
10
;
115
unlockcg 琉璃登场 ;
116
delay
26
;
117
118
text 她抬起头看我。\b\c\e ;
119
120
121
text 靠近了看,\b\n真是美丽啊!\b\c金色的长发披在身后,\b\n精致的五官配合白皙的皮肤,\b\n略带紫色的眼眸尤其漂亮。\b\c浑身散发着和一般女性完全不同的高贵,\b\n是哪里的OL吗?\b\c\e ;
122
123
settalker ??? ;
124
text \v
<
char04_00001
>
呵呵,我就是随便转转。\b\c\e ;
125
notalker ;
126
127
text 她目不转睛的盯着我,\b\n反倒是我有点不好意思了……\b\c\e ;
128
text 我看我还是先说点话来打破这尴尬的气氛好了。\b\c\e ;
129
settalker 苏仪 ;
130
screenmove 纵向抖动
5
0
0
0
0
;
131
text 哦
~
那什么……\b\n转转很好……\b\c\e ;
132
imgout 琉璃登场
10
;
133
delay
26
;
134
setrgb
200
200
200
;
135
imgin lx1
0
0
10
;
136
delay
26
;
137
138
settalker ??? ;
139
text \v
<
char04_00002
>
打扰到你了?\b\c\e ;
140
settalker 苏仪 ;
141
screenmove 纵向抖动
5
0
0
0
0
;
142
143
text 没、\e ;
144
delay
20
;
145
text 没有!\e ;
146
delay
20
;
147
text 完全没有。\b\c\e ;
148
text 我看你低头好像在找东西,\b\n就想问问能不能帮你……\b\c\e ;
149
150
settalker ??? ;
151
152
imgin lx2
0
0
10
;
153
delay
26
;
154
imgout lx1
255
;
155
delay
1
;
156
157
text \v
<
char04_00003
>
你真体贴啊!\b\c\e ;
158
notalker ;
159
screenmove 横向抖动
5
0
0
0
0
;
160
text 体贴体贴体贴……\b\c\e ;
161
text 这两个字在我脑子里响了好久。\b\n头脑一阵眩晕。\b\n我这下真的被击中了。\b\c\e ;
162
163
settalker 苏仪 ;
164
text 不、\e ;
165
delay
20
;
166
text 不会啊……\b\n\e ;
167
text 我就是来问问。\b\c\e ;
168
notalker ;
169
170
imgout lx2
10
;
171
imgin lx3
0
0
10
;
172
delay
26
;
173
174
text 她又笑了。\b\c\e ;
175
176
settalker ??? ;
177
text \v
<
char04_00004
>
你也是来散步的?\b\c\e ;
178
settalker 苏仪 ;
179
text 恩!\b\c\e ;
180
settalker ??? ;
181
text \v
<
char04_00005
>
晚上的海很不错吧!\b\c\e ;
182
183
imgin lx4
0
0
10
;
184
delay
26
;
185
imgout lx3
255
;
186
delay
1
;
187
188
text \v
<
char04_00006
>
我每天都来哦!\b\c\e ;
189
notalker ;
190
text 她看着大海,\b\n仿佛海里面才有她要找的东西。\b\c\e ;
191
192
text 我不知道这个时候该说什么好……\b\c\e ;
193
settalker 苏仪 ;
194
text 你是住这里的吗?\b\c\e ;
195
notalker ;
196
text 问出来我就后悔了,\b\n这个时候怎么能问这种问题呢……\b\c\e ;
197
198
settalker ??? ;
199
200
imgout lx4
10
;
201
imgin lx2
0
0
10
;
202
delay
26
;
203
204
text \v
<
char04_00007
>
这算搭讪吗?\b\n\v
<
char04_00008
>
如果是的话技术可不怎么样哦!\b\c\e ;
205
notalker ;
206
screenmove 纵向抖动
5
0
0
0
0
;
207
208
text 完了!\b\n被人家鄙视了!\b\c\e ;
209
settalker ??? ;
210
211
text \v
<
char04_00009
>
我不住这里,\b\n\v
<
char04_00010
>
不过晚上喜欢在这里走走,\n说不定能遇到有趣的东西呢。\b\c\e ;
212
notalker ;
213
214
text 和这个人说话,\b\n感觉总被她压着啊……\b\c\e ;
215
text 这就是大人和小孩的区别?\b\n看来我还不够成熟。\b\c\e ;
216
settalker ??? ;
217
218
imgin lx1
0
0
10
;
219
delay
26
;
220
imgout lx2
255
;
221
delay
1
;
222
223
text \v
<
char04_00011
>
今天就遇到有趣的东西了。\b\c\e ;
224
settalker 苏仪 ;
225
text 是什么东西呢?\b\c\e ;
226
227
imgout lx1
10
;
228
imgin lx4
0
0
10
;
229
delay
26
;
230
231
settalker ??? ;
232
text \v
<
char04_00012
>
就是你啊!\b\c\e ;
233
settalker 苏仪 ;
234
text ……\b\c\e ;
235
notalker ;
236
text 伴随着爽朗的笑声,\b\n她张开双臂,\b\n在原地转了一个圈。\b\c我注意到她没穿鞋子,\b\n优美的脚在在沙滩上特别好看。\b\c\e ;
237
settalker 苏仪 ;
238
239
imgin lx3
0
0
10
;
240
delay
26
;
241
imgout lx4
255
;
242
delay
1
;
243
244
text 如果没事情,我先走了。\b\c\e ;
245
settalker ??? ;
246
text \v
<
char04_00013
>
不愿意陪我聊聊?\b\c\e ;
247
notalker ;
248
text 好像完全被她牵着走了……\b\c\e ;
249
screenmove 纵向抖动
5
0
0
0
0
;
250
settalker 苏仪 ;
251
text 愿、愿意!\b\c\e ;
252
253
imgin lx4
0
0
10
;
254
delay
26
;
255
imgout lx3
255
;
256
delay
1
;
257
258
settalker ??? ;
259
text \v
<
char04_00014
>
呵呵,今天还是算了,\b\n\v
<
char04_00015
>
以后还有机会的见面的话再聊吧。\b\c\e ;
260
notalker ;
261
imgout lx4
3
;
262
delay
85
;
263
264
text 说完,她转身挥挥手就走了。\b\c我呆呆的站在原地,\b\n看着她消失在夜色中。\b\c到头来,连名字都没问。\b\c\e ;
265
text 不过,成熟的魅力真强大啊,\b\n和以前见过的女性完全不一样。\b\c给人的感觉就好像有很多秘密的人…\b\c\e ;
266
267
setrgb
255
255
255
;
268
269
else
270
271
text 算了,\b\n说不定人家不希望我去打扰呢。\b\c还是在远方看着吧。\b\c也许是没发现我吧,\b\n她继续用脚划拨沙子。\b\c\e ;
272
273
alphaout 纯黑
10
;
274
delay
26
;
275
bg 夜空 ;
276
delay
30
;
277
alphain 圆开
50
;
278
delay
60
;
279
280
text 过了一会,\b\n抬起头看着天空。\b\c月光下,一个人徜徉在沙滩上,\b\n不知道是什么感觉?\b\n相信一定是很棒的吧……\b\c我也抬头看着天空,\b\n今天的月亮是满月,\b\c深蓝色的天空背景中,\b\n皎洁的月光和明亮的星星,\b\n真是美丽。\b\c那个人一定也是在享受这一切。\b\c\e ;
281
282
text …\b\c\e ;
283
text ……\b\c\e ;
284
text ………\b\c\e ;
285
286
alphaout 纯黑
10
;
287
bg 沙滩天黑 ;
288
alphain 圆开
50
;
289
delay
60
;
290
291
text 当我重新在沙滩上寻找她的身影时,\b\n却发现她已经消失了。\b\c\e ;
292
text 刚才的一切不是我在做梦吧?\b\n感觉这么虚幻,\b\n却又如此的真实。\b\c\e ;
293
294
295
endif
296
297
text 回家吧……我转身沿着来时的路往家走去。\b\c\e ;
298
299
nobgm ;
300
bgsoundout ;
发表于 2010-01-01 14:03
CK
阅读(2106)
评论(3)
编辑
收藏
引用
评论
#
re: Sumreen(GAL GAME)引擎框架
發到這裡了啊
#
re: Sumreen(GAL GAME)引擎框架
期待下文。。。。
#
re: Sumreen(GAL GAME)引擎框架[未登录]
orz
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
随笔:15 文章:0 评论:45 引用:0
<
2010年1月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔档案
2010年3月 (1)
2010年1月 (2)
2009年11月 (1)
2009年9月 (1)
2009年8月 (1)
2009年6月 (2)
2009年5月 (2)
2009年1月 (1)
2008年12月 (4)
文章分类
Direct3D中的2D应用底层
(rss)
相册
else
GameMaster
Project DIVA
Sumreen
魔法少女葵
友情链接
SonicMisora的博客
RUA牛的博客
搜索
最新评论
1. re: DXUT工作模式的简单解析-底层框架
您好!我希望能跟你学习DXUT以及3D开发
--张忆
2. re: Direct3D中的简单2D绘制(上)——纹理的绘制[未登录]
汝好
--SonicMisora
3. re: NOIP2009前一天[未登录]
=_,=
--SonicMisora
4. re: Direct3D中的简单2D绘制(上)——纹理的绘制
图片为啥是⑥⑧娘……………………
--Tamashii
5. re: BMS(音乐游戏)文件结构解析
想起当年玩单机版的劲乐团.....
--陈昱(CY)
阅读排行榜
1. Direct3D中的简单2D绘制(上)——纹理的绘制(4981)
2. Direct3D中的简单2D绘制(下)——文字的绘制(4228)
3. BMS(音乐游戏)文件结构解析(2758)
4. DXUT工作模式的简单解析-底层框架(2748)
5. CTSC、APIO以及四川省信息学省队选拔赛总结(2616)
评论排行榜
1. CTSC、APIO以及四川省信息学省队选拔赛总结(16)
2. Direct3D中的简单2D绘制(上)——纹理的绘制(7)
3. USACO Chapter3 Done(4)
4. USACO Chapter4 Done(4)
5. Direct3D中的简单2D绘制(下)——文字的绘制(3)