因为东西挺多的,所以这里只讲基本的构架,即怎么构成这个程序,具体的细节问题后面一个一个再实现

首先要声明一点,我的代码很丑的,因为自己以前没有学习过什么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
      从下篇开始大概会慢慢开始讲各种管理器的实现方法吧。。恩。。工程量好庞大。。慢慢填坑吧。。

  1delay 100 ;
  2
  3bgm BGM04 ;
  4unlockmusic BGM04 ;
  5
  6text 梦中,\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
  8alphain 圆开 10 ;
  9settalker 苏仪 ;
 10screenmove 横向抖动 20 0 0 0 0 ;
 11text 啊!\b\c\e ;
 12
 13notalker ;
 14text 我醒了。\b\c\e ;
 15settalker 苏仪 ;
 16text 呼……\b\c\e ;
 17
 18notalker ;
 19text 怎么会做这种梦呢?\b\c我大口大口地喘气,\b\n背后完全湿了。\b\c太阳已经下山了,\b\n夏日的暑气被夜晚的凉爽取代了。\b\c从窗口能看到一片干净的星空。\b\c天空并不是完全的黑,\b\n而是一种近似深蓝色的背景上点缀着银色的光点。\b\c看来明天又是晴天了。\b\c\e ;
 20settalker 苏仪 ;
 21text 哈欠……\b\c\e ;
 22
 23alphaout 纯黑 10 ;
 24delay 26 ;
 25bg 客厅开灯 ;
 26delay 40 ;
 27alphain 横板拉开 60 ;
 28delay 60 ;
 29
 30notalker ;
 31text 伸了个懒腰之后,\b\n我走下了楼梯。\b\c白天没什么感觉,\b\n但是到了晚上,\b\n立刻感觉到只有一个人的房子显得尤其的大。\b\c让人不免产生孤寂的感觉。\b\c\e ;
 32settalker 苏仪 ;
 33text 好无聊啊……\b\c\e ;
 34notalker ;
 35text 对了,\b\n到海边去看看吧。\b\c就在这里不远,\b\n不就是沙滩吗?\b\c\e ;
 36
 37nobgm ;
 38
 39alphaout 纯黑 10 ;
 40delay 26 ;
 41bg 玄关开灯 ;
 42delay 40 ;
 43alphain 横板拉开 30 ;
 44delay 30 ;
 45
 46settalker 苏仪 ;
 47text 钥匙……\b钥匙……\b\c\e ;
 48notalker ;
 49sound sound/SE_0007.wav ;
 50alphaout 纯黑 10 ;
 51delay 26 ;
 52
 53text 于是,\b\n我锁好门,离开了家,前往海边。\b\c\e ;
 54
 55bgm BGM03 ;
 56unlockmusic BGM03 ;
 57
 58bg 十字路口天黑 ;
 59delay 40 ;
 60alphain 开窗户 30 ;
 61delay 180 ;
 62
 63delay 30 ;
 64
 65text 天空已经彻底暗了下来。\b\c从家到最近的海滩,需要走过一座新修的桥。\b\n海边也有许多小吃店,\b\n不过晚上一般都会冷清许多。\b\c本来家这边就没多少车,\b\n到了晚上更是如此。\b\n路上除了路灯和红绿灯之外没有别的东西。\b\c\e ;
 66
 67text 在凉爽的海风的催促下,我加快了脚步。\b\c\e ;
 68
 69alphaout 横板拉出 50 ;
 70delay 50 ;
 71bg 沙滩天黑 ;
 72bgsound sound/SE_0008.wav ;
 73delay 100 ;
 74screenmove 聚焦 1 200 150 400 300 ;
 75alphain 横板拉开左 60 ;
 76delay 90 ;
 77screenmove 聚焦 60 0 0 800 600 ;
 78delay 70 ;
 79
 80text 出现在面前的就是蔚蓝的海。\b\c\e ;
 81settalker 苏仪 ;
 82text 呼!\b\n真不错……\b\c\e ;
 83
 84notalker ;
 85text 晚上的海滩几乎没人。\b\c这一段海滩属于私人用地,\b\n白天也只有负责清理海滩的工人,\b\n因此晚上更是安静的很。\b\c我找了块比较干的地方,\b\n一屁股坐了下去。\b\c海风吹在脸上,\b\n略带咸湿的感觉。\b\c上大学以来,\b\n还是第一次单独来海边啊……\b\c\e ;
 86
 87text 我开始享受着海滩上那种独有的特别的舒适感。\b\n月光下,\b大海,\b沙滩,\b海风的触感\b及潮汐的声音\b构成了天然的协奏曲。\b\c\e ;
 88screenmove 纵向抖动 5 0 0 0 0 ;
 89
 90text 等等,那边的海滩上好像有人?\b\c\e ;
 91dim 琉璃好感度 ;
 92dim 琉璃登场 ;
 93change 琉璃登场 0 ;
 94
 95#bgm BGM03 ;
 96#unlockmusic BGM03 ;
 97
 98text 距离比较远,\b\n看的不是很清楚。\b\c但是从身形来看,\b\n应该是一名女性。\b\c她似乎在找什么东西,\b\n低着头用脚划拨着沙子,\b\n神情专注的很。\b\c\e ;
 99
100
101text 要不要过去问问?\b\c\e ;
102
103choice 是否过去问琉璃 2 过去问问 算了 ;
104
105ife 是否过去问琉璃 = 1
106add 琉璃好感度 1 ;
107change 琉璃登场 1 ;
108text 过去问问吧。\b\c\e ;
109text 我起身向她走去。\b\c\e ;
110settalker 苏仪 ;
111text 那个,有什么能帮你的吗?\b\c\e ;
112notalker ;
113
114imgin 琉璃登场 0 0 10 ;
115unlockcg 琉璃登场 ;
116delay 26 ;
117
118text 她抬起头看我。\b\c\e ;
119
120
121text 靠近了看,\b\n真是美丽啊!\b\c金色的长发披在身后,\b\n精致的五官配合白皙的皮肤,\b\n略带紫色的眼眸尤其漂亮。\b\c浑身散发着和一般女性完全不同的高贵,\b\n是哪里的OL吗?\b\c\e ;
122
123settalker ??? ;
124text \v<char04_00001>呵呵,我就是随便转转。\b\c\e ;
125notalker ;
126
127text 她目不转睛的盯着我,\b\n反倒是我有点不好意思了……\b\c\e ;
128text 我看我还是先说点话来打破这尴尬的气氛好了。\b\c\e ;
129settalker 苏仪 ;
130screenmove 纵向抖动 5 0 0 0 0 ;
131text 哦~那什么……\b\n转转很好……\b\c\e ;
132imgout 琉璃登场 10 ;
133delay 26 ;
134setrgb 200 200 200 ;
135imgin lx1 0 0 10 ;
136delay 26 ;
137
138settalker ??? ;
139text \v<char04_00002>打扰到你了?\b\c\e ;
140settalker 苏仪 ;
141screenmove 纵向抖动 5 0 0 0 0 ;
142
143text 没、\e ;
144delay 20 ;
145text 没有!\e ;
146delay 20 ;
147text 完全没有。\b\c\e ;
148text 我看你低头好像在找东西,\b\n就想问问能不能帮你……\b\c\e ;
149
150settalker ??? ;
151
152imgin lx2 0 0 10 ;
153delay 26 ;
154imgout lx1 255 ;
155delay 1 ;
156
157text \v<char04_00003>你真体贴啊!\b\c\e ;
158notalker ;
159screenmove 横向抖动 5 0 0 0 0 ;
160text 体贴体贴体贴……\b\c\e ;
161text 这两个字在我脑子里响了好久。\b\n头脑一阵眩晕。\b\n我这下真的被击中了。\b\c\e ;
162
163settalker 苏仪 ;
164text 不、\e ;
165delay 20 ;
166text 不会啊……\b\n\e ;
167text 我就是来问问。\b\c\e ;
168notalker ;
169
170imgout lx2 10 ;
171imgin lx3 0 0 10 ;
172delay 26 ;
173
174text 她又笑了。\b\c\e ;
175
176settalker ??? ;
177text \v<char04_00004>你也是来散步的?\b\c\e ;
178settalker 苏仪 ;
179text 恩!\b\c\e ;
180settalker ??? ;
181text \v<char04_00005>晚上的海很不错吧!\b\c\e ;
182
183imgin lx4 0 0 10 ;
184delay 26 ;
185imgout lx3 255 ;
186delay 1 ;
187
188text \v<char04_00006>我每天都来哦!\b\c\e ;
189notalker ;
190text 她看着大海,\b\n仿佛海里面才有她要找的东西。\b\c\e ;
191
192text 我不知道这个时候该说什么好……\b\c\e ;
193settalker 苏仪 ;
194text 你是住这里的吗?\b\c\e ;
195notalker ;
196text 问出来我就后悔了,\b\n这个时候怎么能问这种问题呢……\b\c\e ;
197
198settalker ??? ;
199
200imgout lx4 10 ;
201imgin lx2 0 0 10 ;
202delay 26 ;
203
204text \v<char04_00007>这算搭讪吗?\b\n\v<char04_00008>如果是的话技术可不怎么样哦!\b\c\e ;
205notalker ;
206screenmove 纵向抖动 5 0 0 0 0 ;
207
208text 完了!\b\n被人家鄙视了!\b\c\e ;
209settalker ??? ;
210
211text \v<char04_00009>我不住这里,\b\n\v<char04_00010>不过晚上喜欢在这里走走,\n说不定能遇到有趣的东西呢。\b\c\e ;
212notalker ;
213
214text 和这个人说话,\b\n感觉总被她压着啊……\b\c\e ;
215text 这就是大人和小孩的区别?\b\n看来我还不够成熟。\b\c\e ;
216settalker ??? ;
217
218imgin lx1 0 0 10 ;
219delay 26 ;
220imgout lx2 255 ;
221delay 1 ;
222
223text \v<char04_00011>今天就遇到有趣的东西了。\b\c\e ;
224settalker 苏仪 ;
225text 是什么东西呢?\b\c\e ;
226
227imgout lx1 10 ;
228imgin lx4 0 0 10 ;
229delay 26 ;
230
231settalker ??? ;
232text \v<char04_00012>就是你啊!\b\c\e ;
233settalker 苏仪 ;
234text ……\b\c\e ;
235notalker ;
236text 伴随着爽朗的笑声,\b\n她张开双臂,\b\n在原地转了一个圈。\b\c我注意到她没穿鞋子,\b\n优美的脚在在沙滩上特别好看。\b\c\e ;
237settalker 苏仪 ;
238
239imgin lx3 0 0 10 ;
240delay 26 ;
241imgout lx4 255 ;
242delay 1 ;
243
244text 如果没事情,我先走了。\b\c\e ;
245settalker ??? ;
246text \v<char04_00013>不愿意陪我聊聊?\b\c\e ;
247notalker ;
248text 好像完全被她牵着走了……\b\c\e ;
249screenmove 纵向抖动 5 0 0 0 0 ;
250settalker 苏仪 ;
251text 愿、愿意!\b\c\e ;
252
253imgin lx4 0 0 10 ;
254delay 26 ;
255imgout lx3 255 ;
256delay 1 ;
257
258settalker ??? ;
259text \v<char04_00014>呵呵,今天还是算了,\b\n\v<char04_00015>以后还有机会的见面的话再聊吧。\b\c\e ;
260notalker ;
261imgout lx4 3 ;
262delay 85 ;
263
264text 说完,她转身挥挥手就走了。\b\c我呆呆的站在原地,\b\n看着她消失在夜色中。\b\c到头来,连名字都没问。\b\c\e ;
265text 不过,成熟的魅力真强大啊,\b\n和以前见过的女性完全不一样。\b\c给人的感觉就好像有很多秘密的人…\b\c\e ;
266
267setrgb 255 255 255 ;
268
269else
270
271text 算了,\b\n说不定人家不希望我去打扰呢。\b\c还是在远方看着吧。\b\c也许是没发现我吧,\b\n她继续用脚划拨沙子。\b\c\e ;
272
273alphaout 纯黑 10 ;
274delay 26 ;
275bg 夜空 ;
276delay 30 ;
277alphain 圆开 50 ;
278delay 60 ;
279
280text 过了一会,\b\n抬起头看着天空。\b\c月光下,一个人徜徉在沙滩上,\b\n不知道是什么感觉?\b\n相信一定是很棒的吧……\b\c我也抬头看着天空,\b\n今天的月亮是满月,\b\c深蓝色的天空背景中,\b\n皎洁的月光和明亮的星星,\b\n真是美丽。\b\c那个人一定也是在享受这一切。\b\c\e ;
281
282text …\b\c\e ;
283text ……\b\c\e ;
284text ………\b\c\e ;
285
286alphaout 纯黑 10 ;
287bg 沙滩天黑 ;
288alphain 圆开 50 ;
289delay 60 ;
290
291text 当我重新在沙滩上寻找她的身影时,\b\n却发现她已经消失了。\b\c\e ;
292text 刚才的一切不是我在做梦吧?\b\n感觉这么虚幻,\b\n却又如此的真实。\b\c\e ;
293
294
295endif
296
297text 回家吧……我转身沿着来时的路往家走去。\b\c\e ;
298
299nobgm ;
300bgsoundout ;