KeyFansClub

首页 » - 同人讨论区 - » 综合同人区 » 吉里吉里2引擎简单教程1,初步的游戏制作篇
瑞树 - 2005/6/14 21:33:00
吉里吉里2/KAG3制作说明

介绍:
吉里吉里2/KAG3是由日本W.Dee氏编写的ADV游戏(也就是通常意义上的AVG)制作引擎,拥有极为强大的功能。性能超过现在国内比较常见的高桥直树的Nscripter引擎和恋爱模拟制作大师系列,拥有众多强大的功能以及良好的编写方式,虽然难度相对较高,但是也比较容易上手。此外,扩展性极强,可以自行制作插件。目前为止,日本已有多款游戏采用吉里吉里2制作,包括TYPE-MOON的FATE,以及多个同人游戏(类型包含AVG,SLG等等)。
KEY FANS CLUB已经取得作者W.Dee氏的授权,进行吉里吉里2的中文汉化以及推广,同时用吉里吉里2制作了几款游戏(如AIR KFC AVG,CLANNAD~KFC千日特典版等)。我们希望能让更多喜欢游戏,希望制作游戏的朋友接触到这款优秀的引擎。


KFC汉化内核2.18简体中文版及相关汉化补丁下载:
(新上传了2.24版)
mail.126.com
账户:krkrkfc
密码:krkrsc


基础功能说明:
1.准备
现在先介绍一下游戏的文件夹构成,首先把KAG3目录中的template文件夹拷贝到kirikiri2目录下。同时把system文件夹中的config.~new改名为config.tjs。
bgimage:背景图像文件(后)
bgm:音乐文件
fgimage:前景图像文件(如人物等等)
image:CG图像文件
other:其它文件
rule:场景转换图像文件
scenario:剧本文件
sound:音效或语音文件
system:系统设置文件
video:视频文件或FALSH动画

注:虽然吉里吉里2中的各个文件可以不放在固定的目录中,但为了方便起见仍然推荐如此做

图像支持:
BMP
JPG
PNG
ERI
TLG5(krkr2.24以前)
TLG6(krkr2.24新版追加)

注:推荐使用吉里吉里2的工具转换的TLG5/TLG6格式,BMP格式过大,而PNG则读取速度较长,且和系统的PNG文件混淆,不利于分类文件压缩。
方法:Tools/krkrtpc.exe
打开后选好非透明和透明的转换格式,直接把图片拖放进去就行了。


音乐支持:
WAVE(无压缩)
MIDI
CD-DA
OGG

注:如果不追求音质的话,推荐使用OGG(可以使用FOOBAR转换)


视频支持:
MPEG-1(.mpeg/.mpg)
SWF(FLASH动画)

注:不推荐用MPEG-2,可能因为某些硬件不支持而无法播放。
    同样不推荐使用SWF,吉里吉里2无法直接进行控制。


UNICODE支持:
支持UNICODE,可以随意使用想用的语言。


图像构成:
完整的吉里吉里2的游戏画面按顺序包括:背景图层,前景图层,文字层(基础),文字层


2.输入
a.文字显示
用文字工具(如记事本等等)打开scenario中的first.ks(这个文件不可改名),即可开始进行编写。编写过程都以离子进行说明。
事先说明,吉里吉里2的所有代码的输入方式:
[代码内容]
@代码内容

注释符:
;在这个符号的同一行后无论输入什么内容,都不会被当作代码或者显示

段落/章节标示:
*:代表某一个段落/章节的起始点,包括分歧选项,剧情跳跃,进度保存,读取等等都离不开这个,所以在设定时请千万注意。

这是吉里吉里2的标准格式,请一定记牢。


打开first.ks文件,内容如下:
[wait time=200]
*start|スタート
[cm]
こんにちは。[l][r]
ごきげんよろしゅう。[l][r]
改ページしますよ。[p]

cm:清除全部的文字层的内容(也就是说,画面上一切文字输入的内容会全部消失)

l:文末等待鼠标/键盘点击,进行文字换行,有l出现的话,则说明必须按鼠标或键盘才能让文本内容进行下去。

r:文字内容改行,新的文字会在第二行出现。

p:作用类似l,但是点击后文字不会换行,而是继续在同一行持续下去。

以上是文字输入的基本功能,熟练的掌握这些,就可以很方便的进行文本输入。



b.背景显示
由于吉里吉里2的默认画面是640x480,所以先以此举例,至于如何修改后面会说明。
[image storage="bg0" page=fore layer=base]
这个就是背景的基本输入方法,虽然也可以用来显示CG,但是后面也推荐用别的方法来。

代码说明:
image:显示图片的代码,只有这个是行头代码,后面的全部都是参数,所以不要搞混。
storage(不可省略):图片路径,用来表示图片的名称,前后要用引号。
page(可省略,如省略则默认为fore):标准输入为:fore/back。表示表层或者里层,如果不加场景转换特效的话,一定要fore,否则图片是不会显示出来的。
layer(不可省略):标准输入为:base/0以上的整数。如果为base则被认定为背景,如果是0以上的整数,则会被认定为相应的前景。




c.前景显示
前景一般是用来显示人物图片的,所以这里面会涉及到背景透明色的问题。如果大家有看过一些游戏的素材的话,会发现很多人物素材的背景是全黑或者绿色等等,这个就是用来作为透明色的部分,吉里吉里2同样支持透明色,在修改图片时请把作为透明的部分统一用一种颜色来填充,作为背景透明色。显示为:XXXXXX,如果用PhotoShop或其他图片工具时,会很方便的找到这些颜色的代码。吉里吉里2同样支持mask(Nscr引擎的图片格式)。
以下是前景的基本输入法:
[image layer=0 page=fore storage="as" visible=true key=0xff00ff left=340 top=100]

代码说明:
image:图片显示代码
layer(不可省略):层次参数。基本输入为0以上的整数。一般输入为0/1/2,默认设置中前景最大为2(3个)。
storage(不可省略):图片路径,用来表示图片的名称,前后要用引号。
page(可省略,如省略则默认为fore):标准输入为:fore/back。表示表层或者里层,如果不加场景转换特效的话,一定要fore,否则图片是不会显示出来的。
visible(可省略):基本输出为:true/false。true表示显示次图层,flase则相反。
key(可省略,如省略则不进行透明处理):透明色制定,基本输入为:0x000000/adapt。如果已经决定好透明色,请指定为更换000000为透明色。adapt则是让程序自己寻找图片中使用最多的颜色作为透明色。
left(可省略):图片的左方位置指定,所有图片都是以左上方(坐标:0,0)为基础点。
top(可省略):图片的上方位置指定。


mask说明:
如果使用mask,请把mask文件名保存为原图片_m,文件扩展名同原图文件,色彩指定为:256色灰度。
原图人物部分为白色,透明背景指定为黑色。
如果使用mask,则代码输入的key参数去掉,举例如下:
原图:人物.png
[IMG=upload/KFCFile4647_f930672561b2a159.png]上传文件4647[/IMG]

mask:人物_m.png
[IMG=upload/KFCFile4648_0b23e785454448fd.png]上传文件4648[/IMG]


[image layer=0 page=fore storage="人物" visible=true left=340 top=100]




d.音乐播放
吉里吉里2所支持的格式全部可以播放,但请注意WAVE一定是没有经过压缩
如采用ogg播放则务必将wuvorbis.dll文件放置在krkr.exe同一目录中,并在first.ks最开始输入@loadplugin module=wuvorbis.dll,启动ogg支持

基本代码:
[playbgm storage="bgm01"]
[stopbgm]

代码说明:
playbgm:音乐播放代码
storage(不可省略):音乐文件路径,用来表示音乐文件的名称,前后要用引号。

stopbgm:停止音乐播放的代码。




e.音效播放
音效播放的全部注意同音乐播放部分

基本代码:
[playse storage="se1.wav"][ws]
[stopse]

代码说明:
playse:音效播放代码
storage(不可省略):音效文件路径,用来表示音效文件的名称。
stopse:停止音效播放的代码

ws:等待音效播放完毕的代码




f.转换效果
经常会在游戏中看到图片之间转换时的淡如淡出,卷帘,百叶窗等等效果,吉里吉里2中通过转换效果实现。

基本代码:
[backlay]
[image storage="bg1" layer=base page=back]
[trans method=crossfade time=1500]
[wt]

代码说明:
backlay:图层由表向里复制代码。基本输入为:basr/0以上的整数。base为背景,0以上的整数则为前景。
trans:转换效果代码。
method(不可省略):转换的类型参数。基本输入为:universal/crossfade/scroll。由于功能不同,所以分别举例。
time(不可省略):转换的过程时间。
wt:转换效果停止。

[trans method=crossfade time=1500]
cross为淡入淡出效果。指定time即可。

[trans method=universal rule="rule1" vague=1 time=1500]
universal为外部图片使用,需要制定转换效果的图片。,须指定time,rule(转换效果的图片),vague
vague(不可省略):指定为0以上整数即可,表示领域值。
rule(不可省略):图片路径,用来表示图片的名称,前后要用引号。

[trans method=scroll from=right stay=false time=1500]
scroll:卷动效果。需要指定from,stay,time三个参数。
from(不可省略):基本输入为:left/right/top/bottom。分别为效果的起始位置:左,右,上,下。
stay(不可省略):表里层转换。基本输入为:stayfore/stayback/nostay。stayfore为外部开始卷动,stayback为内部开始卷动,nostay为两图一同卷动。




g.分歧选项
用于游戏中进行选择的场合,包括设置,剧情分歧,选择等等都会用到。指定进行跳跃的部分前一定要用*部分制定,具体如例。

基本代码:
[cm]
[link target=*select1]選択肢1[endlink][r]
[link target=*select2]選択肢2[endlink][r]
[link target=*select3]選択肢3[endlink][r]
[s]

*select1
[cm]
選択肢1が選択されました。[l]
[s]

*select2
[cm]
選択肢2が選択されました。[l]
[s]

*select3
[cm]
選択肢3が選択されました。[l]
[s]

代码说明:
link:选择效果代码。
target:跳跃的目的地。
endlink:结束跳跃。
s:文本停止。表示文本内容的一部分到此结束。

如果要跳跃的目的在其他的ks文件中,则需要加入storage="xxx.ks"参数,进行文件指定。





h.保存/读取
最常用的游戏进度保存/读取,很遗憾,吉里吉里2不支持随时保存的功能,所有的存储点都需要自己指定。

基本代码:
*label2|セーブ場所2
[cm]
ここはセーブ場所2[l][r]

*label3|セーブ場所3
[cm]
ここはセーブ場所3[l][r]

代码说明:
*:保存点的标记。
|:分隔符后面的内容是保存点说明。
*s1|第一天
保存后会看到说明显示:第一天。




i.游戏发布
先说明一个简单的方法,即压缩到一个exe文件中。
使用Releaser.exe,开启后直接指定游戏的制作目录,然后选择.exe方式压缩
指定好输出位置后确定即可。




j.config设置。
游戏许多的相关设置都在config.tjs中,打开修改即可。由于文件是日文jis码,所以先用南极星或IE等把全部内容改为可正常显示即可。

一些常用修改:

// ◆ タイトル(游戏标题)
// ウィンドウのキャプション(タイトル)および
// タスクバーに表示されるものです。
;System.title = "吉里吉里2(游戏标题,可随意修改)";



// ◆ 画面サイズ(游戏画面)
// scWidth に画面の幅、scHeight に画面の高さをピクセル単位で指定します。
// 標準的に使われている 640x480 や 800x600 のような画面サイズではないサイズ
// に設定すると、フルスクリーンにできない場合があります。
;scWidth = 640;
;scHeight = 480;



// ◆ 左右上下マージン(文字层的文字显示位置)
// マージン (余白) を pixel 単位で指定します。メッセージ枠用の画像を指定し
// た場合は、メッセージ枠の表示範囲内に設定する必要があります。
// これらは、position タグの marginl, maringt, marginr, marginb 属性に対応
// します。
;marginL = 4; // 左
;marginT = 4; // 上
;marginR = 4; // 右
;marginB = 4; // 下



// ◆ 初期位置(文字层的初期位置)
// これらは、position タグのそれぞれ left top width height の属性に対応しま
// す。
;ml = 0;  // 左端位置
;mt = 0;  // 上端位置
;mw = 640-0;  // 宽度
;mh = 480-0;  // 高度



// ◆ BGM再生メディア(音乐类型)
// type 変数に設定する文字列で、使用するサウンドバッファを決めることができ
// ます。
// "Wave"  : WaveSoundBuffer ( wav等(プラグインで再生できる物も含む) )
// "MIDI"  : MIDISoundBuffer ( mid,smf )
// "CDDA"  : CDDASoundBuffer ( cda )
;type = "Wave";
neko - 2005/6/14 21:37:00
沙发>_<


做起来貌似不是一般麻烦啊……我还是享受大家的劳动成果算了=_=|||
武藤破坏 - 2005/6/14 21:47:00
@ @
我的眼睛已经彻底晕了///
不过ADV的制作基本原理也明白了-v-bb
粘土火星 - 2005/6/14 21:58:00
真真最高!!!

PS:AVG的引擎……都是这样的……
valleyforge - 2005/6/14 22:24:00
阿...
前些时候看到繰人形2就是用吉里吉里...
Fantastical - 2005/6/14 23:17:00
有本VC++编AVG的书,有中文版的……原理讲解得更清楚……

但是估计没几个人真去写套引擎吧……
kanonair - 2005/6/14 23:27:00
把这篇文章保存起来..以后慢慢研究..-_-"
希德船长 - 2005/6/15 0:36:00
以下引用Fantastical在2005-6-14 23:17:11的发言:
有本VC++编AVG的书,有中文版的……原理讲解得更清楚……

但是估计没几个人真去写套引擎吧……

写引擎极其麻烦(我只是想写一个小的编辑器就累得够呛,现在遇到很多问题写不下去了),但是一旦写出好的引擎,以后编游戏就省事了,所谓磨刀不误砍柴功,何况这是一把永远不会钝的刀。

这套引擎的确是好东西,只是我还有一点疑问:利用mask是一种很“古老”的图像输出技巧,可是PNG支持32位图像格式,可以设置像素透明度,总觉得就用不着mask了。
粘土火星 - 2005/6/15 0:44:00
mask有着速度上的绝对优势

AVG引擎方面,直接用到PNG的透明特性似乎不是很多。而且人物的话,mask不是很麻烦的事

另外引擎是支持指定透明色的不要忘了,就是说没有mask也可以……但是mask还是最快呀……
黑翼天使 - 2005/6/15 2:26:00
[em42][em42]
期盼已久的东西...终于出来了! 感谢女神大人! 大感谢!!! ^O^

这就回去按教程好好研究研究,希望也能制作出像 CLANNAD KFC1000 Day Edition 一样的强作出来! ^O^

另外强烈支持与期待krkr2中文汉化版的发布!

最后还是要大感谢女神大人,女神样辛苦了!
悠久ノ風 - 2005/6/15 6:26:00
但是..吉里吉里2要在哪儿可以找到呢..
牧野みみも - 2005/6/15 6:33:00
CLANNAD KFC1000 Day Edition好象是用Nscripter做的吧……?
sorabeam~ - 2005/6/15 8:29:00
CLANNAD KFC1000 Day Edition是用吉里吉里做的,游戏里已经很清楚的标明出来了= =
瑞树 - 2005/6/15 10:13:00
CLANNAD KFC1000 Day Edition的确是用吉里吉里2制作的,吉里吉里和NSCR的压缩格式是完全不同的……

这个是相对比较简单的基础说明,以后还会写更多的制作技巧……如果大家有什么需要的或者不明白也可以在这个帖子提出来,一起进行解决的
悠久ノ風 - 2005/6/15 11:10:00
不过吉里吉里是免费的东西么?听某个BOSS经常抱怨下不到吉里吉里2的完整版..

其实比起这种单机AVG开发工具..我想做一个AVG.NET..
瑞树 - 2005/6/15 11:38:00
是完全免费的,这点在和原作者沟通时已经得到了原作者的证实和同意,可以修改引擎的内核,也可以自由修改里面的文件,创作品可以用于任何用途,但引擎本体不能进行任何商业用途。

AVG.NET……这个大概可以通过RPG.NET来实现吧……


简体中文汉化的2.18版已经上传,以后有其他汉化界面的版本发布……
不过仍然推荐使用新的2.24版进行制作,由于2.19版后系统上有较大变化,所以对旧版并不完全兼容。
瑞树 - 2005/6/15 12:27:00
新上传了2.18汉化版的界面及窗口汉化文件,见首帖
瑞树 - 2005/6/15 23:51:00
追加一个自定义名字的内容,以后松散的内容会贴在这里,为查找方便以后会单独整理的。

*inputname    输入名字的代码
[eval exp="f.name='KEY'"]    变数控制代码,定义主人公名字为"KEY"(默认)
[input name=f.name prompt="我叫..." title="请输入自己的ID"]  定义一个输入名字的窗口
;----------------------------------------------------   
;ID叫主人公
[if exp="f.name=='主人公'"]    条件分歧+变数控制,假如名字输入为:"主人公"
[ct]                          得到反馈
这个ID不能使用[p]              返回结果
[jump target=*return_name]    返回重新输入
[endif]                        结束分歧
;;----------------------------------------------------
;输入的名字过长               
[if exp="f.name.length>10"]    假如名字输入的长度超过10个字符
[ct]                          得到反馈
ID请在10个字以内[p]            返回结果
[jump target=*return_name]    返回重新输入
[endif]                        结束分歧
;----------------------------------------------------
[cm]               
ID是[font color=0xff0080][emb exp=f.name][font color=default],这样可以吗?[r]          定义字体
[delay speed=nowait]                                                                 
[link target=*scene01]A.好的[endlink][r]                                            条件分歧:确定
[link target=*inputname]B.换个名字[endlink]                                        条件分歧:否定
[delay speed=user]                 
[s]                                                                                  此内容结束
;--------------------------------------------
*return_name                                                                          否定的结果
[ct]
[jump target=*inputname]                                                              返回重新输入
[s]                                                                                  此内容结束


以上内容代码涉及到了变数和其他内容,以后的新加部分会有详细解释……
封月翔天 - 2005/6/17 2:35:00
汗,看了介绍,感觉比我现在直接用C写代码都麻烦......
不过用脚本的东西,推广起来就是方便啊....

BTW:这里有人做游戏设计的吗?
YWT - 2005/6/17 18:57:00
以前只写过脚本引擎(并非是为了游戏开发,仅仅是一个代码解释器+执行引擎),不过看起来和这种脚本系统有些区别= =
我那个的语法是基于C的,可以使用一般编程的一切逻辑代码(for、if、while。。。。),然后也支持类......不过并没有写其他部分

我个人认为AVG系统应该就是Script Engine+对应的图象处理器(mask、各种动画、字符显示等)+音频子系统。
不过当然SE最重要了。
不过好的解释引擎很难写.....
瑞树 - 2005/6/17 20:06:00
修正了原文的一些错误……对不起大家……

音效部分的引号不强制
剧本文件为first.ks
kerin ma - 2005/6/17 20:33:00
哦哦哦哦哦哦哦哦哦...好物
非常感谢女神大人..

尝试中...
黑翼天使 - 2005/6/18 6:24:00
[em42]
再次感谢女神样写的完美教程以及大力帮助! 经过几天的艰苦研究,终于有了些小成果,做了一个小作品出来给女神样和大家欣赏。
不足之处还要请女神样和大家的多多指点!

[url][STRIKE]http://pickup.mofile.com/cn/pickupok.do?pickupcode=2202191220915511[/STRIKE][/url]
(进入页面点 “免登录下载,下一步”)

谢谢女神样! 谢谢大家!


大体界面:
[IMG=upload/KFCFile4734_work.JPG]上传文件4734[/IMG]
希德船长 - 2005/6/19 13:07:00
赶快去学编译原理,不仅是为了考试,更为了能编写出像吉里吉里2这样的游戏引擎。
bm7140 - 2005/6/27 12:21:00
记得以前有一款ADV Script Engine Advance 20 Bulid 105 beta的冬冬貌似没有这么麻烦……
upin - 2005/6/29 16:39:00
楼主要支持啊
LOVEHINA-AVC - 2005/6/30 5:59:00
以下引用bm7140在2005-6-27 12:21:13的发言:
记得以前有一款ADV Script Engine Advance 20 Bulid 105 beta的冬冬貌似没有这么麻烦……


有人记得这个东东,我会比较寒的(那是偶两年前写的东西……=o=)
bm7140 - 2005/6/30 21:09:00
以下引用LOVEHINA-AVC在2005-6-30 5:59:13的发言:


有人记得这个东东,我会比较寒的(那是偶两年前写的东西……=o=)

呵呵~那还记得我吗?还给你汇报过bug~
那时说完程度90%,但100%终究是没有等到啊
LOVEHINA-AVC - 2005/7/1 1:53:00
因为现在EADV已经出来了,以前那个幼稚的作品就忘掉好了^_^
1
查看完整版本: 吉里吉里2引擎简单教程1,初步的游戏制作篇