KeyFansClub

首页 » - 同人讨论区 - » 综合同人区 » 吉里吉里2教程集合帖
长山真夜 - 2005/6/19 20:31:00
这个帖子将收录以后发表的全部吉里吉里2教程以及制作技巧……整理完毕前请不要回帖,谢谢


-------------------------------------------------------------
吉里吉里2教程1·基础篇

吉里吉里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";
长山真夜 - 2005/6/19 20:34:00
制作技巧

1.自定义名字(变数操作)

*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/7/23 15:27:00
制作标题的方法:

以下以今年为MIKA祝贺生日的纪念品的标题为例,原标题画面的全部文字直接做好

@startanchor                                              确定此处为开始处,在游戏中选择回到标题画面时回到此
@stopbgm                                                  停止播放音乐
@rclick enabled=false                                      关闭鼠标右键
@clickskip enabled=false                                  关闭点击跳过
[current layer=message0 page=fore withback=ture]          指定可操作文字层
[layopt layer=message0 page=fore visible=true]            更改层属性
[position layer=message0 page=fore frame="" opacity=0]    更改文字层的属性
[cm]                                                      清除文字层内容
[font size=28 face=default color=default edge=false]      修改字体
[backlay]                                                  图层由表向里复制
[image storage="title" page=back layer=base]              指定背景画面(即菜单)
[trans method=crossfade time=500]                          淡入的场景转换
[wt]                                                      等待转换结束
@nowait                                                    文字瞬间出现
[locate x=485 y=218]                                      指定文字位置
[link target=*vocal]        [endlink][r]                  选项1,空格处为图片上文字长短位置
[locate x=445 y=268]                                      指定文字位置
[link target=*game]              [endlink][r]            选项2,空格处为图片上文字长短位置
[locate x=507 y=319]                                      指定文字位置
[link exp="kag.close()"]      [endlink]                    选项3,结束游戏                                 
[font size=default face=default color=default edge=false]  恢复默认文字属性
@endnowait                                                结束文字瞬间出现
[s]                                                        此段内容结束


代码说明:
startanchor      独立代码,在游戏中选择回到标题画面时回到此

rclick              鼠标右键属性代码(默认状态下为消除文字层)
参数:call          值为true/false    开启是否进行内容呼叫
      jump          值为true/false    开启是否进行内容跳跃
      target        同一文本内内容的指定,call/jump为true时才有效
      storage        其他文本的内容的指定,call/jump为true时才有效
      enabled        值为true/false    是否开起鼠标右键

clickskip            鼠标点击代码
参数:enabled(必须)值为ture/false,是否开启鼠标点击

current              操作文字层的指定
参数:layer          值为message0/message1,指定1个为操作文字层
      page          值为fore/back,设定为表或者里

layopt              层属性
参数:layer(必须)  值为0以上整数/message0/message1,指定前景层或文字层
      page          值为fore/back,设定为表或者里
      visible        值为ture/false,层是否显示
      left          值为整数,表示层的左端位置
      top            值为整数,表示层的顶端位置
      opacity        值为0(完全透明)~255(不透明)的整数,指定层的透明度
     
position            文字层属性
参数:layer          值为message/message0/message1
      page          值为fore/back,设定为表或者里
      left          值为整数,表示层的左端位置
      top            值为整数,表示层的顶端位置
      opacity        值为0(完全透明)~255(不透明)的整数,指定层的透明度
      width          值为整数,层的宽度
      height        值为整数,层的高度
      frame          文件名,如果使用自己设计的框架的话,则需要指定
      framekey      值为0xRRGGBB/adapt,指定框架的透明色
      color          值为0xRRGGBB,文字层颜色
      marginl        值为整数,文字层左方空白处
      margint        值为整数,文字层上方空白处
      marginr        值为整数,文字层右方空白处
      marginb        值为整数,文字层下方空白处
      vertical      值为true/false,true为竖行文字显示,false为横行文字显示
     
font                文字属性
参数:size          值为整数/default,文字大小,default为默认
      face          值为字体名称/default/user,default为默认,user为现用的字体
      color          值为0xRRGGBB,文字颜色     
      italic        值为true/false/default,文字斜体设定
      shadow        值为true/false/default,文字阴影设定
      shadowcolor    值为0xRRGGBB/default,文字阴影颜色
      edge          值为true/false/default,文字边缘设定
      edgecolor      值为0xRRGGBB/default,文字边缘颜色
      bold          值为true/false/default,文字粗体设定

locate              文字/图片位置设定
参数:x              值为整数,指定x轴位置
      y              值为整数,指定y轴位置
瑞树 - 2005/7/23 15:50:00
制作说明文件:

建立一个about.ks文件,打开后编辑

@title name="说明"                    标题文字
@rclick enabled=false                关闭鼠标右键
@clickskip enabled=false              关闭点击跳过
@position left=0 top=0 width=320 height=200 color=0xffffff opacity=255 marginl=0 margint=0 marginr=0 marginb=0    设定文字层
@style align=center                  文字居中表示
@font size=28 shadow=false color=0    设定字体
@wait time=200                        等待
@nowait                              文字瞬间显示
@backlay                              图层由表向里复制代码
@current page=back                    操作文字层的指定
@locate y=10                          设定文字位置
KEY FANS CLUB                        文字显示
@trans method=crossfade time=500      淡入显示
@wt                                  等待显示结束
@wait time=10000                      等待
[font size=default]                  字体返回默认
*exit                                结束
@close                                关闭窗口


说明:
title                                设定标题
参数:name(必须)                    可以随意输入

style                                文字/图片格式
参数:align                          值为left/top(左上),center(居中),right/bottom(右下),default(默认),设定位置
      linespacing                    值为整数,行间距
      pitch                          值为整数,文字距离
      linesize                        值为整数/default,预定的最大行间距

close                                关闭窗口代码
亡灵之猫 - 2005/9/4 16:52:00
[em36]
貌似好复杂

偶想自己做一个简陋的C脚本(可编译伪代码)的mini AVG引擎
预计近期目标1~2年可以完成(还要做音乐。。忙啊~~)
远期目标.....看我以后从事什么行业了(虽然学计算机专业,但我不想进这个行业)

开发代号:BlackPan(原于某KFC典故)
-----------------------------------------
近期内核目标: 
    绘图:Win32 GDI(效率不高但是简单)
    音频:WaveOut(不仅简单而且自由)
          Sequencer(配合WaveOut可以做出许多优秀的BGM)
          MCI(不懂任何解码算法的后果)
    视频:MCI(同上)
    配置文件:*.ini
素材支持:
    图形:BMP(包含32bit Alpha)
    声音:WAVE
          MIDI
          (任何MCI支持的格式)
          (某人的打包后音乐格式)
    视频:任何MCI支持的格式
脚本:C only
授权:GNU 公共版权

优点:可以使我这种小白可以在短期内完成程序开发
缺点:
      缺乏必要的图像、音乐压缩措施,开发成品体形庞大
      2001年以前配置的计算机只能在320*240分辨率下获得可以忍受的速度
      MCI使用存在“微软”局限问题,不能自由扩充
-----------------------------------------

远期内核目标:
    绘图:OpenGL
    音频:WaveOut / DSound (可选)
          Sequencer
    视频:基于Media Play Classic内核的视频架构(GNU 公共版权)
    编码:
          内核支持FLAC编解码(GNU 公共版权)
          基于“真空”算法的数据压缩
    配置文件:*.ini
    支持插件开发~~
素材支持:
    图形:
          BMP(包含32bit Alpha)[压缩]
          PNG
          3DS模型
    声音:
          WAVE
          FLAC
          MIDI
          (某人的打包后音乐格式)
          (已安装MPC解码器的格式)
    视频:视安装的MPC解码器而定
脚本:C / C++
附件:
    BlackPan傻瓜化开发环境
    专用BGM音乐编辑器
    专用脚本编辑器
    专用伪代码编译器
    专用脚本调试器
    专用素材打包工具

授权:GNU 公共版权
瑞树 - 2005/12/15 7:06:00
新版本的汉化使用(感谢Miliardo君提供此文章)

原文地址:
http://www.keyfc.net/bbs/disp.asp?titleid=12676


建议使用官方的TVP 2.24 Release 3
下载地址:http://kikyou.info/tvp/

使用方法:
备份你原先的config.tjs文件,解压这个system目录覆盖原先KAG的system目录,然后拷回原来的config.tjs文件。
下载:http://www.keyfc.net/bbs/upload/KFCFile7470_system.rar

如果使用的预渲染字体文件名称不为SimHei.tft(关于预渲染字体的说明见下),则请修改HistoryLayer.tjs的第129行:
font.mapPrerenderedFont('SimHei.tft');
中SimHei.tft的文件名。

有关内核未汉化的TVP2(Kirikiri2),本来由于代码页是Shift_JIS,不能选择中文字体。
使用KFC的2.18版,则只能使用宋体。
使用官方版,对于某些符号会出现宽度问题(因为优先匹配日语字体)。
本人曾经尝试过修改程序代码,但是TVP2的源代码关联非常复杂,所以虽然修改完成了,编译却没有成功……
(BCB5以上+Boost libRegEx+libjpeg6b+libpng还要修改代码,最后以为成了突然中间冒出来一个莫名其妙的头文件……Orz)
剩下的唯一解决方法只有一个:使用TVP2的自带已渲染字体——事先把Truetype字体渲染为已经处理完成的位图字体,然后直接调用,就可以无视编码问题。

具体方法:

字体转换工具tools/krkrfont.exe,
以黑体为例,如图所示:


除了粗体的可选项可以自己决定之外请选择其他所有图上已钩选的单选项,然后选择需要的字体和字号,选择输出路径,按转换键(右下角的快捷键为(G)的按钮)
为了让大家更加清楚选项的意思……放上Applocale转码后的图。但是切记转换中文字体的时候不要使用Applocale,否则转换的字体无效!(某的切身体验……)

然后请将生成的文件放到你的游戏目录下(就是Data目录下,与startup.tjs同目录)
然后,以我上面的转换输出为例,请在first.ks中加入下列语句:

[mappfont storage="SimHei.tft"]
[font face="SimHei"]

至此,工作完成。
Miliardo - 2006/1/7 2:03:00
关于Flash的调用

修正一个真夜殿的说法,作为影片控制,Flash确实不适合使用。但是如果作为一些界面,Flash是相当合适的。(适合像我一样对mapimage苦手的人)

现在我介绍如何契合Flash和KAG3。
当在Flash的ActionScript中调用了fscommand("Go","xxx.ks/a");的时候,
KAG系统将自动转到xxx.ks脚本文件中的标签*a。
当在Flash的ActionScript中调用了fscommand("Eval","opt");的时候,opt中的TJS表达式将被求值。

[wv]标签对于Flash无效,请通过在Flash中设置跳转到含有使视频层不可见的代码来结束播放。

如果Flash能够打开却不能够直接正常显示,那是因为Flash的VideoOverlay被设置为不可见。
请尝试使用video的tag。如果不行请使用本人的补丁。

http://www.keyfc.net/bbs/upload/KFCFile7978_movie.zip

请解压后覆盖游戏目录system文件夹下的同名文件。
这样,在使用playvideo的时候视频层将自动浮至最顶,stopvideo时视频层将自动不可见。
本人的补丁同时做了一些调整,首先,我增加了一个命令;
当在Flash的ActionScript中调用了fscommand("Call","xxx.ks/a");的时候,
KAG系统将自动调用xxx.ks脚本文件中的标签*a作为子程序执行(可以使用return标签跳回)。
其次,为了避免混乱,我禁止了动画在标准层上播放的功能,所有动画将一律在覆盖一切普通层的覆盖层上播放。

以上。
瑞树 - 2006/2/9 14:50:00
关于Fate场面描写的研究报告……(1)

进行过Fate游戏的朋友想必都会对游戏中华丽的战斗场面表现印象深刻……
这不仅仅是画面与音乐的强力结合,同时也包含着奈泽优秀的导演和画面剪辑功力,以及程序员的完美表现。
可以说……Fate HA的大桥突破战(决战篇)中的对决的表现让人钦佩之至。

不过这里面涉及了Fate程序员自己编写的插件的问题,所以只稍微介绍一下用krkr自身的zoom插件和kag技巧来实现画面突出表现的方法……(汗)
个人认为kag中最重要的trans、move、quake三者的结合
Fate的武器攻击描写通常都有武器的顺序,所以适当利用trans的universal(从左至右等等),便可以在快速的切换中表现出武器的攻击轨迹(time以180~250为佳)
然后是武器碰撞的表现,可以应用到zoom功能,通过瞬间的碰撞图片扩大化(或者移动)来表现
涉及到魔法攻击时,比较常见的是从单一的攻击到全画面的攻击图片,这里面也涉及到了zoom插件的表现
用zoom集中到魔法画面的某一处,然后再集中到另外一处(time时间要短,用于瞬间表示),然后再逐渐扩大到全画面(time值在300~500之间较好,playse和quake两个都不能忽视)

那么……此次报告如上……(等表现力较为成熟后会放出)
Miliardo - 2006/2/27 17:07:00
以下引用瑞树在2006-2-9 14:50:11的发言:
关于Fate场面描写的研究报告……(1)

进行过Fate游戏的朋友想必都会对游戏中华丽的战斗场面表现印象深刻……
这不仅仅是画面与音乐的强力结合,同时也包含着奈泽优秀的导演和画面剪辑功力,以及程序员的完美表现。
可以说……Fate HA的大桥突破战(决战篇)中的对决的表现让人钦佩之至。

不过这里面涉及了Fate程序员自己编写的插件的问题,所以只稍微介绍一下用krkr自身的zoom插件和kag技巧来实现画面突出表现的方法……(汗)
个人认为kag中最重要的trans、move、quake三者的结合
Fate的武器攻击描写通常都有武器的顺序,所以适当利用trans的universal(从左至右等等),便可以在快速的切换中表现出武器的攻击轨迹(time以180~250为佳)
然后是武器碰撞的表现,可以应用到zoom功能,通过瞬间的碰撞图片扩大化(或者移动)来表现
涉及到魔法攻击时,比较常见的是从单一的攻击到全画面的攻击图片,这里面也涉及到了zoom插件的表现
用zoom集中到魔法画面的某一处,然后再集中到另外一处(time时间要短,用于瞬间表示),然后再逐渐扩大到全画面(time值在300~500之间较好,playse和quake两个都不能忽视)

那么……此次报告如上……(等表现力较为成熟后会放出)


因为没有线性补间……
用zoom.ks的效果非常差……(某曾身受其害)
瑞树 - 2006/2/27 21:07:00
自由使用的线性补间倒是看到了,不过只有一半,没有另外一半没办法使用……(貌似那一半已经停止公开了………………汗)
zoom基本上缩放2.5倍左右是极限,超过这个范围效果就非常差……
zhangmdk - 2006/5/17 9:28:00
小技巧TIP:

=============================
关于文字剧本转成游戏剧本中,名字后indent的批量替换小技巧。
=============================
例如文字剧本:

观铃:啊?恐龙?哪里?
往人:恐龙去西瓜田了!
观铃:啊?我们快去西瓜田……

这段要转成名字后面带有indent的缩进效果的方式。
那么就可以小小利用一下[]这种代码编写方式。
将“观铃:”替换成“[观铃]”,“往人:”替换成“[往人]”
而代码段部分则就可以加入indent了,如下:

@macro name=观铃
观铃:
@indent
@endmacro

@macro name=往人
往人:
@indent
@endmacro

而indent之后应该有一个endindent来结束缩进。
这个就要小小利用一下偷懒脚本了。如下:

@macro name=lrc
@l
@r
@cm
@endindent
@endmacro

代码使用即[lrc]这种形式。(基本上每个人物对话之后都需要清屏一次的,有极少数特殊情况可以单独修改)
那么再在每句的后面加上一个[lrc]就OK了……

其实就是手动加[lrc]也是很快的,左手按住CTRL,准备按V,然后鼠标点行尾,V一下,点下一个行尾,V一下……效率也很高的。
当然,还有更高效率的机械方法……

利用WORD的特殊字符替换功能。
在WORD的替换栏中输入“^p”(引号不算)字符就代表着段落符,也就是普通所谓的换行符(HEX:0D 0A)。
利用这个功能可以批量将有文字的行的行尾加上[lrc]

第一步:搜索“^p”,替换成“[lrc]^p”,替换全部
结果:所有行的行尾都加上了[lrc],而且就算没有字的行也加上了。
第二步:搜索“^p[lrc]^p”,替换成“^p^p”,替换全部
结果:你会发现,空行的[lrc]已经全数被清理了~


经过几个步骤之后的文字剧本就转化成了游戏中的脚本:

[观铃]啊?恐龙?哪里?[lrc]
[往人]恐龙去西瓜田了![lrc]
[观铃]啊?我们快去西瓜田……[lrc]


该技巧大批量导入剧本时十分省时省力,特此分享  XD
瑞树 - 2006/5/17 15:39:00
针对简易版1.5的一个修正

;文字框出现
@macro name=texton
@position layer="message" frame="msgframe" visible="true" left="0" top="360" page="fore" color="0x000000" opacity="0"
@endmacro

;文字框消失
@macro name=textoff
@position layer="message" frame="msgframe" visible="false" left="0" top="360" page="fore" color="0x000000" opacity="0"
@endmacro

这部分使用layopt的方式会更好一些(虽然效果没什么区别)

;文字框出现
@macro name=texton
@layopt layer=message visible=true
@endmacro

;文字框消失
@macro name=textoff
@layopt layer=message visible=false
@endmacro


下一个版本中会修正进去的……
zhangmdk - 2006/7/12 15:31:00
这几天在家继续开发《西瓜战争》的同人篇
有些小经验给大家分享一下

------------------------------------------------------
关于变量
------------------------------------------------------
写程序的经常用到变量。
在KRKR中也可以利用变量来完成很多看起来很麻烦实际很简单的事情。
KRKR中的“单纯”的字面意义上的“变量”有三种。
1/ f    举例:f.temp            eval exp="f.temp='丫就一口胡'"
2/ tf    举例:tf.temp            eval exp="tf.temp='丫就一口胡'"
3/ sf    举例:sf.temp            eval exp="sf.temp='丫就一口胡'"

f型的变量为普通变量
tf型的变量为临时变量
sf型的变量为系统变量
这三种变量都可以存储任何数据类型的数据,也可以随时修改删除
那么三种变量的特性都是什么呢?
主要体现在“保存”的方法中。
f型(普通变量),它在整个游戏过程中不会自动清除,并且会在存档时存入存档,在读档时读出并恢复。
tf型(临时变量),它在整个游戏过程中不会自动清除,但是它不会在存档时保存在存档中,同样也不可能在读档时恢复数据。
sf型(系统变量),它比较特殊,它也不会在游戏过程中被自动清除,它也可以存档,但是它存的档并非游戏中的SAVE档案,而是系统档案。即它不会存入游戏存档,但是它会存入系统存档并在游戏启动时读取与恢复。

举个例子来说。(以下采用伪代码)
===============================================
f.temp = 11  / tf.temp = 11  / sf.temp = 11
存档一下。
f.temp = 12  / tf.temp = 12  / sf.temp = 12
读档看看
===============================================
我们在“存档一下”时存档
然后在“读档看看”是读档
如果是f.temp,那么结果是11,因为f.temp存入了存档,然后在读档时进行了恢复
如果是tf.temp,那么结果是void,因为tf.temp未存入了存档,然后在读档时也未初始化,所以是空,即void
如果是sf.temp,那么结果是12,因为sf.temp存入了系统存档而不是游戏存档,在进入“读档看看”前进行了一次新付值12,那么读档后依然是12,不会变。就算你关掉游戏重开,它还会是12。

变量的赋值方法很简单,直接用等于“=”就可以,但是要求是在TJS式中。
例如:
@eval exp="t.temp=10"
这样

那么怎么使用呢?
如果是TJS式,就直接访问好了。如果是在KAG中呢?
如下:
@eval exp="t.temp=1500"
@wait time = "&t.temp"
这个wait语句相当于“@wait time = "1500"”

那么变量方面到此告一段落。
还有一个要注意的就是:mp变量
mp变量是系统给macro特地准备的变量。
例如:
@macro name = test
@wait time = %time
@endmacro
那么这个时候我们会用
@test time = 1500
来使用这macro
那么在这个macro之中,我们可以用“mp.time”来访问从@test time = 1500中输入的1500这个值。
即:
========================
@macro name = test
@wait time = %time
@endmacro
========================
这段代码完全等于
========================
@macro name = test
@wait time = mp.time
@endmacro
========================

恩,关于变量的就到此结束了。
------------------------------------------------------


------------------------------------------------------
关于简单的系统调试

在系统运行过程中(非发布形式运行),按下shift+f1可以叫出调试界面。
我想使用这个东西的人比较少。
我以前调试变量是通过DEBUG的文字部分然后通过emb来输出变量显示。
麻烦不说,累的半死效率还不高。

突然想起曾经汉化过的KRKR的N个截面,有一个“监视界面”,怎么看都是用来调试变量的。

那么按下SHIFT+F1,然后会有一个小工具拦出现。
(代续)
------------------------------------------------------

以后有时间补上关于图层覆盖与系统调试方面的心得。
jasson15 - 2010/2/12 17:53:00
好帖!突破我半年來的怨念...
(雖然是我自己有eXpress不想用)

終於可以用漂亮的字型了!
1
查看完整版本: 吉里吉里2教程集合帖