命令行选项(Command line Option)

 吉里吉里的命令行选项,除了通过本体自带的命令行系统来指定以外,还可以通过Releaser ( krkrrel.exe ) 或是 吉里吉里的设定工具 ( krkrconf.exe 或 エンジン設定.exe ) 来将设定文件进行保存。


吉里吉里对命令行选项进行读取的顺序如下:
  1. 原本嵌入在吉里吉里本体内部的选项(吉里吉里内核编译前就已经写好的部分,这部分在实际的游戏开发过程中是碰不到的)
  2. 用「吉里吉里设定工具」(即krkrconf.exe)导出的、与吉里吉里内核存放在同一目录下的 .cf 文件(文件名与吉里吉里内核的名称一致)
  3. 用「エンジン設定」(エンジン設定.exe)导出的、存放在游戏存档文件目录下的 .cfu 文件(文件名与吉里吉里内核的名称一致)
  4. 在命令行窗体中指定的选项
关于 .cf 文件和 .cfu 文件,如果不存在的话也没关系,KR娘会自动跳过对它们的读取。读取顺序上,越优先被指定的选项,在被读取的时候就会排得越靠后。由于现阶段还没有可以将命令行选项从外部直接嵌入到吉里吉里本体里的工具,所以选项内容从吉里吉里本体内被读取的情况并不存在。(但在已经嵌入吉里吉里本体内的命令行选项里存在一些特殊的命令行选项,这部分选项是无法从命令行窗体进行指定的)。

 命令行选项的基本格式是:由 '-' (半角连字符) 开头,后面跟命令选项的名称。如果在名称的后面加上 '=' ,就可以设定选项的值了。
 例如,要将选项名为 -cdvol 的命令行选项的值设定为 direct 的话,就可以像:-cdvol=direct 这样来写。
(U子注:在上面的例子中:-cdvol 就是我们所讲的命令行选项,direct 则是选项的值、也就是一般所说的命令行参数啦w 大家不要把命令行选项跟命令行参数搞混了喔(*≧▽≦))

 在诸多的命令选项中,除去「启动option」、「debug相关的option」、「系统兼容性相关的option」这三类以外,其他几乎都是为了解决用户的操作系统环境的兼容性问题、进行细微调整所用的选项。
 关于系统环境的兼容性问题的解决方法,请参考关于系统环境的兼容性问题页面。


Note
虽然可以利用 Releaser 或 krkrconf.exe ( エンジン設定.exe ) 对吉里吉里的可执行文件或者外部的设定文件进行改写、改变原有的命令行选项,但通常保持默认状态就可以了,不需要刻意地进行改动。一般也不推荐大家在作品开发的过程中,为了适应作品的开发环境而将这些选项的值改为默认值以外的值。这样做也许可以解决开发过程中所存在的一些问题,但如果就这样把这些修改过的可执行文件/设定文件当做正常情况下未做过修改的文件那样来发布的话,程序与终端用户的操作系统环境出现不兼容问题的可能性就会大大增加。所以如果没有特殊情况,最好不要对默认的值进行改动。(当然,也存在像 -datapath 这样的、发布时的设置是对应着终端用户在实际使用时的需要来进行调整的选项,这种选项就可以根据需要来进行调整啦)


下面的list里标注了「可动态变更」的选项,可以用System.setArgument 方法对选项值动态地进行更改。除此之外的其他命令行选项就不可以在tjs文件或者ks文件中随时进行变动了。

U子注
考虑到关于命令行选项的这些内容在新手们看来可能会感觉比较迷,所以U子会在翻译的同时尽可能详细地把每一条都解释清楚。
就结果来说,这个页面可能会变得比较冗长,很多人也许会觉得很罗嗦吧。
但是,在考虑到国内目前一直缺乏一些与吉里吉里本体相关的、比较详细的说明文档的这个现状后……

最终还是决定:这些注解果然还是要写的!并且一定要尽可能地把它写详细!

也许这里面大部分的选项,在开发过程中也好、玩家实际游戏过程中也好,都很少能真正使用到,甚至根本不会接触到。
但即使这样,U子仍然认为:作为一名吉里吉里的研究者/爱好者、或者一名合格的krkr程序员来说,都应该更全面、更透彻地了解这款引擎本身。
身为这部手册的翻译者,U子也会本着自己的原则:“翻译并解读”来进行翻译工作。

其实U子在开始翻译前就明白,写这些注解一定会是件十分费力、而且不讨人喜的工作。(毕竟这是手册,不是教程,而且现在的人经常会“太长不看”)
所以也不奢求每一位读者都能理解这份辛苦,觉得啰嗦的同学,可以直接跳过这个页面不看。

抛开别的不提,说实话,吉里吉里中绝大部分的命令行选项也许真的没什么太大的实用价值,在做普通开发时真的很少很少能用得到。
所以你们是可以放心地跳过的,不必担心会落下什么特别重要的内容。
假设在其他页面中真的涉及到了必须了解某个命令行选项才能理解的部分,U子也会以超链接的方式引渡到这个页面的具体位置上。

嗯,就说这些。
综上所述,如果还有意愿要继续了解命令行选项的同学,就跟U子一起愉快地继续阅读下去吧w

程序启动相关的选项(option)

 以下列出的选项,用于呼叫吉里吉里的特定功能。
命令行的选项是可以一次操作多条命令行选项的,选项间需要用半角空格进行分隔。
但是不同选项间肯能会存在冲突,存在冲突的选项的情况下,内核可能只会执行其中某一条选项。
例如,如果同时写了 -about 和 -userconf 两个选项,则只会执行 -userconf。
-userconf(启动面向终端用户的设定工具)
 启动内置于内核本体内的面向终端用户(enduser,可以理解为程序的最终使用者、一般也就是指游戏的玩家)的设定工具。
 名为 エンジン設定.exe 的程序,是一种会检索与 エンジン設定.exe 存放于相同目录下的吉里吉里可执行文件,并自动附上 -userconf 选项将其启动的程序。

U子注
这里也尽可能地遵照了原文来进行翻译,看起来可能比较迷于是稍作解释。

嗯…大体就是说: 我们经常能在日版游戏的目录中看到的那个名为“エンジン設定.exe”的程序,他会自动地检索自身所在目录下的kr可执行文件,并附加上-userconf这个命令行选项再启动它,而实际效果就是启动了内核参数设定的界面(类似krkrconf.exe工具的界面,不过由于是面向游戏玩家的,所以没有发布选项跟修改图标这些功能了)

至于“エンジン設定.exe”,目前日版的游戏中使用kr开发的游戏的目录下大多数都有这个东西,不过国产的作品里似乎很少有带它的。
不知道是因为制作组偷懒忘了放、或者有些开发者可能会觉得这些设定普通玩家根本用不到,所以也懒得放进去……
不过出于考虑到有些新人同学可能真的不知道它是个啥、到底在哪生成的,于是这里还是再唠叨一下。其实也没什么深奥的东西……

就像前面说的,它跟krkrconf.exe是不一样的,所以他们并不是同一个程序。(介不废话嘛…… =﹏=b)
那它到底是什么程序呢?是怎么生成出来的呢?打包发布工具里也没有相关的选项可以生成它呀?
嗯是的,因为它压根就不是被别的工具生成出来的…… 它是一个单独的工具,性质跟打包工具和krkrconf一样,是被单独编写出来的。

如果手头上有KCDDP之前发布的KAGeXpress3集成包的话,可以在enduser-tools子目录下找到它,那个子目录下初始就只有它一个文件,名称是userconf.exe。
其实你仔细看一下会发现,这个userconf.exe的大小跟日版游戏目录下的エンジン設定.exe的大小其实是一样的,都是10.5KB。
虽然没具体检查过源码,不过这两个应该是完全一样的,毕竟这个工具本身也没什么复杂的功能,而且连界面上的字符都是写在内核里的……
其他工具也许还存在新旧版本上的差异,但是对于这个工具来说,它几乎是可以通用于所有版本的内核的。
你甚至可以直接找个日版游戏,复制它目录下的エンジン設定.exe然后改个你喜欢名就可以直接拿来用了(U子抱着尝试的心态测试了一下,结果居然还真的可以……)

后期U子在发布汉化版2.32内核 + KAGEX2集成包的时候,也会把这个工具的源码重新编译一下,看看有没有需要调整的地方。
到时候也会参考之前KAGeXpress3的目录结构,把这个工具放在相同的子目录下,需要的同学有爱自取w
-about (显示著作权信息对话框弹窗)
 显示「版本信息・版权・环境信息」的对话框。

U子注
这里在效果上等同于热键功能的 Ctrl + F12 。
不过不同之处在于后者是在内核启动以后执行的,而这里则只能打开这个弹窗,连热键功能本身也无法启动。
-nosel (测试模式)
 不再显示「选择 文件/文件包」对话框,同时也不对 data.xp3 之类文件内的数据进行自动读取,而是直接启动吉里吉里控制器(吉里吉里Control)。用于对程序进行debug处理,或进行其他脚本测试的情况。
-sel (显示「选择 文件/文件包」对话框)
 显示「选择 文件/文件包」对话框。不会对 data.xp3 之类文件内的数据进行自动检索。
 如果将(名称的一个字符不为“-”的)文件夹(folder)作为命令行参数来指定,就可以将那个文件夹作为当「选择 文件/文件包」对话框打开时默认初始展示的目录。

U子注
关于改变这个选项的值,在实际写的时候需要注意几个问题。

在启动方法页面中的、关于“在命令行中指定的项目目录”的注解里,U子也提到了关于命令行选项在使用时的操作方法,是通过cmd命令行窗口开启系统的“运行”功能。
在这里再向大家介绍一种更简便的方法:通过创建kr可执行文件的快捷方式,在快捷方式中直接追加需要操作的命令行选项。
这个快捷方式可以是封包发布后的,也可以是正常情况下的裸内核的。
具体操作是这样:首先,为需要操作的exe创建一个快捷方式,然后右键选择属性,再选中左数第二个选项卡“快捷方式”在下面找到“目标”这个条目,然后把光标定位到文本输入框的最后面,输入一个半角空格跟前面的内容隔开,就可以开始书写需要操作的命令行选项了。
写完之后点击确定或者应用,再运行这个快捷方式,设定的命令行选项就会生效。这种方法实现的效果与在cmd命令行窗口中书写的效果完全等同。

以这刚刚讲的种方法为基础。根据上文中提到的:可以通过给 -sel 追加命令行参数的方式,指定「选择 文件/文件包」界面右侧默认展示的目录。
例如,在存放内核的目录下有诸如 data、data2、data3、plugin 等等文件夹,把其中某个文件夹的名称作为命令行参数追加上,就能让「选择 文件/文件包」界面右侧的目录内容展示列表上初始显示你所指定的这个文件夹里的内容。不过,在上文中也提到了,如果有名称是类似 -data、-ABC 这种文件夹的话,由于语法上跟命令行选项有重叠,所以它们是不能被作为命令行参数来指定的,这一点要注意一下。

另外,除了要注意文件夹名称的问题,还要注意在实际书写命令行语句时的书写方式问题。
如果直接写成 -sel=data 这样也是不行的,会忽视掉你指定的文件夹。需要在 -sel 跟 data 间加个空格,也就是像 -sel data 这样写,被指定目录的内容才可以显示出来。
至于那个“=”,在这里是完全没意义的,可以直接删掉。或者你也可以写成 -sel= data,总之只要保证 -sel 跟后面的文件夹名之间有个半角空格就可以,反正等号不会起什么作用就是……
具体原因不明,似乎只有 -sel 这个选项在指定参数的时候要这样去写,而别的都是正常的 -选项名=值 这样写就可以……

-printdatapath (输出数据文件保存路径)
 内核将数据文件的存储位置(-datapath选项设定的内容)以标准输出的方式、另起一行作输出,完毕后随即停止运行。这个选项是为了:“将与吉里吉里本体相联系的存档数据的管理权,提供给外部应用程序、方便其利用这些数据”而存在的。
 关于数据文件存储位置的选项值的设定,类似 $(exepath) 等有特殊含义的字符串,在输出的时候会被替换成其最终处理完毕后得到的文件路径。
 由于吉里吉里本体是 GUI 应用程序(有用户图形界面的应用程序),所以单纯在命令提示符中给吉里吉里的可执行文件指定 -printdatapath 选项并启动是什么也不会显示的。要获取输出的内容,需要以“管道”或者“重定向”的方式来进行操作。

U子注
对于这个选项,肯定有不少新手朋友感到很迷很迷…… 其实U子在查清楚之前也完全搞不懂这到底是什么。
不过,这个选项可以说是整个页面中第一个、大概也是唯一一个涉及到了命令行系统本身的一些概念的选项了。
对于理解“命令行”这种操作方式来讲,这是个非常好的说明对象。
U子会在这里把之前查到的所有与命令行系统相关的知识都写出来,但是由于篇幅有限,不可能讲太细,所以想深入了解的同学就自己再去查一下吧。

首先,我们重新梳理一下关于吉里吉里的命令行系统的操作方式。
之前提到了两种,分别是:
  1.通过win+R打开Windows系统的“运行”功能,在里面输入kr可执行文件的路径然后键入需要操作的命令行,然后运行;
  2.通过创建kr可执行文件的快捷方式,并在其属性信息中键入需要操作的命令行,然后运行快捷方式。
但是这两种其实都不是最正规的“命令行”的操作模式,因为它们都不是在“命令行操作界面”也就是平常我们讲的“命令提示符(command prompt)”中来书写标准的命令行语句的操作方式。

嗯,是的,说到这个“命令提示符”,很多同学大概马上就明白了,其实就是Windows系统的cmd.exe,它是一种模仿命令行系统的工具。
这个东西也是年代久远,早在win95的时代它就已经存在了,它是dos系统向有图形化操作界面的系统过度的一个中间产物。
讲得极端一点,我们甚至可以把它理解为是“系统中的系统”,它本身就是一个小型的dos系统。

而我们这里要讲的第三种操作吉里吉里命令行系统的方法,就是通过Windows系统的cmd.exe。

上文也说了,由于吉里吉里是有GUI的应用程序,它本身木有命令行界面(那个console、也就是debug控制台,是冒牌的,只是做个样子而已……)
不过截至目前,kr都主要是面向Windows系统被设计的,所以能用cmd来操作kr的命令行也不是什么难理解的事。
很多同学有可能在之前没怎么接触过cmd这个东西,只是概念上知道它似乎有很多命令、而且都得手打,有图形界面谁还用它呀……
嗯…… 毕竟时代在发展嘛,不过cmd也是很强的,用它可以很随意地操作Windows系统。

这次就不讲太多与cmd的命令相关的内容了,在操作kr的命令行时,我们只需要记住一条“cd”命令就可以了。
cd 是用来切换目录的指令,我们之所以需要它是因为我们需要把当前目录定位到需要操作的kr可执行文件存放的目录里,然后直接输入kr的可执行文件名再空格敲选项就可以回车执行了。
假设需要操作的kr.exe是放在d盘的alpha文件夹下的beta文件夹里的话,拿上一条选项 -sel 来举例,在cmd中就可以这样来写:
  d: → 回车执行 → cd alpha\beta → 回车执行 → kr.exe -sel data → 回车执行
这样就可以启动kr.exe这个内核的那啥界面了。哦对了,如果这个kr.exe是打包后的exe的话,也是可以打开那个界面的,这一点之前忘了提。
不过如果用一个打包成exe的程序去运行另一个工程的话,会占用更多的内存。这大概算个bug了,不过一般也没人闲得去这么弄……

接下来讲讲所谓的“重定向”(redirect)和“管道”(pipe)。这两种都是命令行系统中的概念,在功能上也存在一些相似之处。
我们先来看重定向。

想必很多同学都知道,在DOS的那个时代,操作系统是没有图形化的操作界面的,当时的计算机,就是以“输入命令”的方式来完成各种操作的。
而“重定向”也是自MSDOS起就被支持的命令行特性,它负责将制定的命令或语句所产生的输入输出请求由缺省的“控制台”转交给其它的“设备”来完成。
它的启动标志是在句中出现了“重定向符号”(包括“> , >> , <”三个)。

一般的命令行程序输入输出请求都通过内部定义三个“端口”(在NT下称为“句柄”,在DOS下未定义)来完成。
分别为标准输入stdin、标准输出stdout、标准错误stderr。
它们通常指向的设备为控制台(console,代码为CON),其中stdin指向控制台的键盘,stdout/stderr指向控制台的监视器。
因此,控制台通常即指键盘与监视器的联合体,这是在早期大型机的终端机上所体现出来的概念。
其中的stdin可被<重定向,stdout可被> 、>>重定向,而stderr在DOS下不可直接重定向,只有通过ctty或其它命令将系统控制权转交给其它设备的方式,来间接完成。

……

解释起来还有很长的内容可以讲,上面这一小段是U子找到的资料里讲的,U子觉得那篇资料里讲得很专业而且也很透彻,有兴趣阅读完整版的同学可以来找U子要这篇文。
我们换一种通俗点的解释:重定向,就是把原本应该输入(或输出)到某个地方的数据,输入(或输出)到另一个地方去。因为文件流的方向变了,所以叫“重定向”。
其实重定向这个概念在很多地方都通用,包括Unix系统、C语言、PHP中等等,意义也都差不多。
用重定向的方式输出 -printdatapath 选项的值,在cmd中可以像下面这样写。
首先还是把目录定位到kr可执行文件的目录下,然后:
  kr.exe -printdatapath > 1.txt
回车运行后,就可以发现kr.exe所在的目录下多了一个1.txt,这里面就记录着当前的数据文件保存路径。
同样你也可以用这种方式把这串数据传给别的程序,虽然U子没去尝试过……

然后我们讲讲管道。
这次直接用比较通俗的解释:管道,就是把前面一个命令的结果、当作下一个命令的条件或者说参数来执行。
具体在写的时候是用“|”这个字符来标志的,就是把“或”删掉一根,对应键盘上的 shift + 反斜杠(\)。
管道这个概念也通用于许多地方,比如Unix系统、Linux系统、C语言以及blabla…… 其意义也都是差不多的。
不过,管道有点像是重定向的升级版,它可以一次设定多个步骤的操作,并且可以跟重定向相结合使用。
比如,我们可以像这样写:kr.exe -printdatapath > 2.txt | type 2.txt
同样默认是当前目录就是kr.exe所在的目录,并且之前不存在名为2.txt的文件,type是将文本文件的内容输出到cmd面板上,执行后,cmd的面板上就会显示出当前的数据文件保存路径了,同样2.txt里面也会保存着相同的字符串。

这次就先讲到这里吧…… 应该已经把命令行系统相关的要点都讲清楚了,至少在kr的应用上应该是足够了,至于kr怎么跟别的程序联系起来、能跟什么程序实现交互操作等等,有兴趣的同学自己研究一下吧……
不过这一大段读完之后不难发现,kr在设计的时候就引用了各种各样计算机方面的概念,就像tjs这种脚本语言也集合了很多其他语言的特点一样,嗯,总之向作者大大(们)致个敬w

系统整体的选项

-datapath(数据文件的保存路径)
 吉里吉里用来保存各种数据文件的目录。(U子注:所谓的数据文件,最常见的一种就是游戏的存档文件,其他也包括KR的运行日志、用户自定义的设置文件等等。)
 可以以字符串的形式来指定选项值。
 虽然也可以以绝对路径的形式指定选项值,但一般情使用下列有特殊含义的字符串来指定就好。

$(exepath)
替换为 System.exePath(吉里吉里内核所在的目录)。
$(appdatapath)
替换为 System.appDataPath(用户主目录)。这个目录通常是被系统隐藏的。
$(personalpath)
替换为 System.personalPath(我的文档)。
$(vistapath)
操作系统高于Vista时替换为$(appdatapath)、低于Vista时替换为$(exepath)。

默认是以「$(exepath)\savedata」作为选项值的。以这种方式设定的话,就不需要特别考虑installer(安装程序)的问题了,可以直接将程序打包成压缩文件来发布(比如 zip),用户解压后直接运行游戏程序、就会在游戏程序的目录下自动创建一个目录来存放游戏的存档以及其他数据文件。
但是,使用这种默认的设定时,如果将程序放置在 Program Files 目录下、但玩家的操作系统用户没有 Program Files 目录下的文件写入权限(例如类似 Windows XP 等环境下的「受限用户」)的话,玩家在启动程序时、就有可能因为无法写入数据文件而报错。
以「$(appdatapath)\程序名」或者「$(personalpath)\程序名」这样的方式来指定,虽然可以直接将数据文件保存在用户的操作系统所附属的文件夹内、可以一定程度上避免数据丢失等问题的发生;但同时对一般用户来说,游戏的存档文件的位置也许会变得不那么容易找得到,也许会造成困扰。

吉里吉里在启动时,如果用这个选项所指定的数据文件保存目录不存在的话,吉里吉里会尝试新建出一个来;但就算新建失败了的话,程序也不会就此结束、而是会继续进行处理,这就需要确保用户脚本内部存在错误处理用的代码(用于捕捉数据无法保存的异常)。

在使用「エンジン設定」对默认设定进行调整后,伴随着产生的设定文件(.cfu文件)也会生成在用这个选项指定的目录中。此外,各种日志文件默认也是存放于这一目录下的。
-contfreq (处理权重)
 在进行渐变效果的处理时,程序会根据指定的画面刷新频率进行处理。指定处理权重,可以控制是否降低CPU的使用率。
 值可以指定为 '0' (不指定处理权重) 或是其他正整数,如果不指定就默认视为 0 。指定为正整数的情况,会以 Hz 为单位、指定渐变时每秒画面刷新的周期次数。
 会受这个选项影响的,主要是 trans(层渐变效果)以及用 System.addContinuousHandler 注册的 Continuous 函数。
 如果指定为 '0' ,在执行渐变之类的效果时,会全额使用CPU资源来进行处理。
 如果指定为数值,就会按指定的数值作为刷新周期进行处理。这种情况下CPU不会满负载运行。这样可以缓解因为受到其他正在运行的程序的影响、或是CPU的温度上升所导致的电脑耗电量增加。指定的数值越低、效果就会越明显。但是,如果指定了很低的数值,有可能会使执行trans之类的效果时、画面变得不流畅。
  如果使用waitvsync选项等待垂直同步,则Continuous处理程序将根据垂直同步的时间进行驱动,而contfreq选项的设置将被忽略。
 可以动态更改此选项,但更改将在下一个渐变或Continuous处理程序中断时生效。
-memusage (内存使用上限)
 本条选项用来设定内存的使用上限。
 可指定的值有 'normal' (普通)'low' (低) 两种,如果不主动指定选项值的话,则默认将 'normal' 视为其指定的值。
 将值指定为「低」时,会比指定为「普通」时更节约对内存的使用。但是,将值指定为「低」的话,将会导致类似“吉里吉里内部的各种缓存机制受到制约”、“TJS2 散列表(Hash table,也叫哈希表)的容量受到限制”等等限制情况的发生,内核的性能就会有所降低。以及,将值指定为「低」的话,「图形图像相关的选项-图像缓存限制」的值将强制被设定为「不对图像进行缓存」。
-timerprec (定时器精度)
 本条选项用来设定计时器(Timer)精度的高低。
 可指定的值有 'normal' (普通)'higher' (较高)'high' (高) 三种,如果不主动指定选项值的话,则默认将 'normal' 视为其指定的值。
  此选项仅对NT操作系统(NT/2000/XP/Vista/7)有意义。Win9x操作系统(95/98/98SE/ME)将忽略此选项。
 “higher”和“high”总体上提高了计时器(包括大多数与时间和计时相关操作)的准确性,并可能消除KAG中的字符显示迟滞和MIDI播放迟滞,但可能会降低性能。
-laxtimer (计时器事件容量限制)
 限制系统内可储存的定时器事件数 ( 事件允许发生的最大上限 ) ,设定是否回避“由于定时器事件积存过多而可能导致系统无法对其进行处理”的情况。
 可指定的值有 'no' (不回避)'yes' (回避) 两种,如果不主动指定选项值的话,则默认将 'no' 视为其指定的值。
 在处理速度非常慢的计算机或使用计时器处理负载非常大的任务的情况下,吉里吉里可能无法响应计时器引起的事件,从而导致操作等难以响应。此选项指定“yes”将始终将系统中存储的最大计时器事件发生量固定为1(Timer类的capacity属性为1)。这样可以减少系统无法处理的计时器事件的发生,但通常会丢失计时器的精度和准确性。
-lowpri (低优先度)
  设置在渐变期间之类是否降低优先级。
 可设置的值为 'no' (否)'yes' (是) ,如果未指定此选项,则视为指定了“no”。
 如果设置为“yes”,则在吉里吉里主线程连续使用CPU的情况下(例如,在执行渐变时),将降低主线程的执行优先级。这可以改善渐变过程中的跳音,以及渐变过程中其他应用程序操作迟缓等症状。

输入设备相关的选项

-wheel (鼠标滚轮旋转检测方法)
 确定如何检测鼠标滚轮的旋转。。
 可设置的值为 'no' (否)'dinput' (DierctInput)'message'(窗口消息) ,如果未指定此选项,则视为指定了“dinput”。
 选择「否」可禁用鼠标滚轮。选择“DirectInput”以使用DirectInput。选择“窗口消息”可在不使用DirectInput的情况下检测鼠标滚轮的旋转。更改设置可能会改善与鼠标滚轮相关的问题。
-joypad (是否可用手柄)
设置是否使用手柄(摇杆)。
 可设置的值为 'no' (否)'dinput' (是) ,如果未指定此选项,则视为指定了“dinput”。
 选择“否”可禁用手柄。如果无法正常检测手柄或无法正常使用手柄,则设置为“否”。
-paddelay (手柄键重复延迟)
指定手柄(摇杆)重复按键之前的时间(以毫秒为单位)。
 可设置的值为正数或-1,-1表示不重复键。如果未指定此选项,则视为指定500。
  您可以动态更改此选项。
-padinterval (手柄键重复间隔)
指定手柄(摇杆)上重复按键的时间间隔(以毫秒为单位)。值越小,重复速度越快。
  可设置的值为正数,如果未指定此选项,则视为30
 您可以动态更改此选项。
-controlime (IME状态控制)
 设置是否控制IME(转换输入软件,如日语)的状态(如启用或禁用)。
 可设置的值为 'yes' (是)'no' (否) ,如果未指定此选项,则视为指定了“yes”。
 如果选择「否」,则可能会避免“无法输入通过IME输入的语言,如日语”等问题。

声音相关的选项

-cdvol (CD-DA 音量控制方式)
 设置CD-DA音量控制方式。
 可设置的值为 'mixer' (声卡混合器)'direct' (直接控制CD-ROM驱动器) ,如果未指定此选项,则视为指定了'mixer'。
 'mixer' 控制声卡的混频器以更改CD-DA的音量。声卡应正确插入以确保CD-ROM驱动器到人耳的路径。
 如果指定'direct' ,CD-ROM驱动器将使用其自身的音量控制功能来更改音量。从CD-ROM驱动器的头戴式耳机端口直接连接头戴式耳机等的情况等也能音量的控制,不过,也有CD-ROM驱动器无法对应的情况。
-wsdecpri (PCM解码线程优先级)
 解码PCM的线程的优先级。
 可设置的值为 '0' (空闲(最低)), '1' (低), '2' (低于正常), '3' (正常), '4' (高于正常), '5' (高) 。如果未指定此选项,则视为指定了“1”。
 较高的优先级可能会减少PCM( 非压缩wave或OggVorbis )播放过程中的跳音,但可能会导致过渡变得不平滑或操作响应变差。
 顺便说一下,这里指定的是正常解码优先级,在紧急情况下(当缓冲区中的剩余数据变短时)自动确保所需的优先级。
-wssoft (DirectSound 软件混合)
 指定DirectSound是否使用软件进行混音。
 可设置的值为 'yes' (进行软件混合), 'no' (不进行软件混合) ,如果未指定此选项,则视为指定了“yes”。
  在标准配置中,软件混音会增加CPU负载,但更有可能避免硬件特定的故障。如果将此选项指定为“no”(即使在硬件中进行混音)也没有问题,则可能会降低CPU负载。对于USB音频或价格较低的声卡,更改此选项可能不会产生任何影响,因为混音可能始终在CPU中进行。
-wsrecreate (DirectSound 次缓冲区重新生成)
 DirectSound是否始终重新生成次缓冲区。
 可设置的值为 'yes' (始终重新生成), 'no' (根据需要重新生成) ,如果未指定此选项,则视为指定了“no”。
 吉里吉里一旦创建次缓冲区,如果声道数和采样频率等条件相同,则吉里将重用次缓冲区,但如果指定“是”,则将始终重新生成次缓冲区,而不重用次缓冲区。某些环境可能会改善播放开始时的不稳定情况,如跳音和断音。
-wsl1len (DirectSound 次缓冲区长度)
 DirectSound 次缓冲区长度设置。
 可置值整数,以毫秒为单位。至少需要250毫秒。如果未指定此选项,则视为指定1000。
 此处指定的是为DirectSound预留的次缓冲区的实际长度。
  通常,较长的缓冲区会使播放更稳定,但会占用内存。
-wsl2len (DirectSound 辅助次缓冲区长度)
 DirectSound次缓冲区的二级缓冲区长度设置。
 可设置的值为整数,以毫秒为单位。至少需要250毫秒。如果未指定此选项,则视为指定1000。
 吉里吉里为DirectSound的每个次缓冲区创建一个辅助缓冲区,暂时将解码数据存储在辅助缓冲区中,然后再传输到次缓冲区。此处指定的缓冲区长度是其辅助缓冲区的长度。
 通常在低优先级线程中进行解码处理和存储到辅助缓冲区,而从辅助缓冲区到次缓冲区的传输是在高优先级线程中进行的。
  通常,较长的长度会使播放更稳定,但会占用内存。此外,如果控制对解码过程进行更改,则在实际发音之前的延迟会延长。
-wsmute (DirectSound 禁用)
 设置DirectSound在应用程序处于非活动状态或最小化状态时静音(降低音量)。
 可设置的值为 'never' (不静音), 'minimize' (最小化时), 'deactive' (非活动时),如果未指定此选项,则视为指定了“never”。
 如果选择'never' 则不静音。'minimize' 和 'deactive'分别在应用程序最小化和非活动状态时静音。
 只有在 WaveSoundBuffer 中播放的内容 ( 在KAG中使用“Wave”的背景音乐和音效 ) 才会静音,MIDI或CDDA播放不会静音。
-wsmutevol (DirectSound 静音音量)
 使用-wsmute(DirectSound静音)设置静音时的音量。
 可设置的值为整数,以%为单位。
 「0%」表示完全静音,「50%」表示半音量(约为-6dB)。
-wsforcecnv (DirectSound 强制格式转换)
 是否将DirectSound播放的PCM数据强制转换为指定格式的设置。
 可设置的值为 'none' (不转换), 'i16' (转换为16位整数) , 'i16m' (1转换为16位单声道整数) ,如果未指定此选项,则视为指定了“无”。
 更改设置可能会改善播放故障。选择“i16m”将忽略-wsexpandquad选项(DirectSound强制4ch播放)中的设置。
-wsuse3d (DirectSound 3D控制)
 是否使用DirectSound进行3D控制的设置。
 可设置的值为 'no' (否), 'yes' (是) ,如果未指定此选项,则视为指定了 'no' 。
 选择“yes”可启用声音的3D控制,并启用WaveSoundBuffer.posX、WaveSoundBuffer.posY和WaveSoundBuffer.posZ属性(这些属性在当前版本中已实现,但不受支持)。
 此外,在许多环境中,如果选择“yes”,DirectSound3D会将立体声和单声道声音扩展到环绕扬声器(例如,只在前扬声器上播放的声音现在在5.1声道环境中的所有扬声器上播放)。
 选择'yes'将忽略-wsexpandquad选项(DirectSound强制4ch播放)中的设置。
-wsexpandquad (DirectSound 强制4ch播放)
  设置DirectSound是否强制使用包含后置扬声器的4ch播放立体声或单声道声音。
 可设置的值为 'no' (否), 'yes' (是) ,如果未指定此选项,则视为指定了 'no' 。
 如果设置为'yes',则即使在立体声和单声道声音仅在前扬声器上播放的环境中,也可以同时在前扬声器和后扬声器上播放声音。
-wsfreq (DirectSound 主缓冲区频率)
 DirectSound主缓冲区的播放频率设置。
 可设置的值为正的的自然数,频率以Hz为单位表示。如果不指定此选项,则视为指定了“44100”。。
 注意在使用WDM声卡驱动程序的环境(如Windows2000,XP或更高版本)中,即使更改设置,播放状态也可能保持不变。
-wsbits (DirectSound 主缓冲区位数)
 DirectSound主缓冲区的播放位数设置。
 可设置的值为 'i8' (8位整数), 'i16' (16位整数), 'i24' (24位整数), 'i32' (32位整数), 'f32' (322位浮点数) ,如果未指定此选项,则视为指定了“i16”。
 注意在使用WDM声卡驱动程序的环境(如Windows2000,XP或更高版本)中,即使更改设置,播放状态也可能保持不变。
-wscontrolpri (DirectSound 主缓冲区播放控制)
 是否控制DirectSound主缓冲区的播放/停止。
 可设置的值为 'yes' (是), 'no' (否) ,如果未指定此选项,则视为指定了“yes”。
 在极少的环境下,如果改变设定,就会改善跳音和断音。
-wspritry (DirectSound 主缓冲区设置尝试级别)
  指定DirectSound主缓冲区格式时要尝试次数的设置。
 可设置的值为 '0' ~ '2' (级别0 ~ 级别2), 'all' (全部) ),如果未指定此选项,则视为指定了‘all’。
  如果指定级别0,则尝试设置立体声16位整数的格式。
 如果指定级别1,则在尝试级别0之前,根据系统扬声器设置,尝试将声道数设置为16位整数。
 如果指定级别2,则在尝试级别1之前,将尝试使用「DirectSound主缓冲区位数」设置的位数,根据系统扬声器设置的声道数以及WAVEFORMATEX结构设置格式。
 如果指定「all」,则在尝试级别2之前,将尝试使用与级别2相同的配置以WAVEFORMATEXTENSIBLE结构指定格式。

图形图像相关的选项

-gclim (图像缓存限制)
 设定分配给图像缓存使用的内存的最大值。
 可将其值指定为 'auto' (自动) 或任意的整形数字。将值指定为整形数字时,被指定的整数相当于以 MB 为单位计算的、分配给图像缓存使用的内存大小。如果不主动指定选项值的话,则视为指定了 'auto'。
 吉里吉里拥有的图像缓存机制可以快速检索之前读取过的图像,并迅速地将它们显示出来。这一选项就是为设置可供这一机制使用的内存的限度值而设计的。
 将值指定为 'auto' 的话,内核将根据计算机内实际装配的物理内存大小,自动制定图像缓存量的值。
 将值指定为 '0' 则不对图像进行缓存。
 如果在吉里吉里运行期间交换频繁发生,则此值较小或指定‘0’可能会有所改善。
-fsmethod (全屏切换方法)
 设置用于全屏切换的方法。
 可设置的值为 'ddraw' (DirectDraw), 'cds' (ChangeDisplaySettings API),如果未指定此选项,则视为指定了 'ddraw' 。
 更改设置可能会改善全屏切换的问题。如果DirectDraw由于某种原因不可用,即使指定了“ddraw”,也会自动使用ChangeDisplaySettings API。
 可以动态更改此选项,但该值将在下次尝试全屏时生效。
-fsbpp (全屏颜色模式)
  设置全屏颜色模式。
 可设置的值为 'nochange' (不变), '16' (16位颜色), '24' (24位颜色), '32' (32位颜色) ,如果未指定此选项,则视为指定了 'nochange' 。
 如果指定'nochange',则颜色模式与非全屏颜色模式相同。
 可以动态更改此选项,但该值将在下次尝试全屏时生效。
-fsres (全屏时的屏幕分辨率)
 设置全屏时的屏幕分辨率。
 可设置的值为 'auto' (自动), 'proportional' (纵横比相同的分辨率) , 'nearest' (最接近的分辨率) , 'nochange' (分辨率不变) ,如果未指定此选项,则视为指定了 'auto' 。
 如果选择'auto'将自动选择和使用最合适的屏幕分辨率。在这种情况下,在纵横比相同的分辨率中,如果有适合程序中指定的分辨率的分辨率,则选择该分辨率,但如果没有这样的分辨率,则在不改变分辨率的情况下在引擎上放大显示。在此情况下,即使将-fszoom(全屏时引擎放大)选项指定为“no”(无),也始终被认为是“outer”(在显示器内适配)。
 如果选择'proportional'则屏幕的长宽比将与非全屏相同,但与程序中指定的分辨率相同或更大,并且最接近。
 如果选择'nearest',则将选择与程序中指定的分辨率相同或更大且最接近的分辨率,但不能保证选择与非全屏分辨率相同的长宽比分辨率。此设置可能适用于阴极射线管显示器或支持在屏幕宽高比保持不变的情况下进行放大的液晶显示器。
 如果选择'nochange' 以保持非全屏分辨率不变。
 可以动态更改此选项,但该值将在下次尝试全屏时生效。
-fszoom (全屏引擎放大)
 指定引擎在全屏期间如何放大屏幕。。
 可设置的值为 'inner' (在显示器中适配), 'outer' (放大到填充显示器), 'no' (不放大),如果未指定此选项,则视为指定了 'inner' 。
 如果选择'inner',引擎将根据需要进行放大。如果屏幕分辨率与程序中指定的分辨率不同(如果屏幕分辨率低于程序中指定的分辨率,则执行缩小操作)。在放大时,将保持程序中指定的分辨率的长宽比,但如果显示器的长宽比与此长宽比不同,则可能会出现上下或左右间隙。此间隙始终显示为黑色。
 如果选择'outer' ,引擎将根据需要进行放大,就像指定“inner”一样。但是,与“inner”不同的是,如果显示器的长宽比与程序中指定的长宽比不同,它将放大到足够大的宽度,以防止出现上下或左右间隙。因此,虽然不会出现间隙,但屏幕可能会超出显示器。例如,在16:10的显示器上显示16:9的内容时,此设置允许您将内容放大而不留空隙。当然,这会产生向左右凸出的区域,因此,如果要制作以这种方式显示的内容,就需要采取措施,例如在凸出的部分不显示重要的UI和文字。
 如果选择'no' ,引擎将不执行任何放大(即使需要)。在这种情况下,即使屏幕分辨率与程序中指定的分辨率不同,引擎也不会放大(这可能会导致屏幕中心的图像变小)。
 请注意,如果显示器的原始分辨率与图形卡输出的信号分辨率不同,例如液晶显示器可能会在显示器端进行放大,但如果在显示器端进行放大,然后在引擎端进行放大,则可能会进行双重放大,从而导致图像变模糊(-fsres中的“自动”选项会自动选择防止这种双重放大的组合)。
 放大过程受-dbstyle(双缓冲)选项的影响。如果速度异常缓慢,请尝试更改-dbstyle选项的设置。
 可以动态更改此选项,但该值将在下次尝试全屏时生效。
-gsplit (分割图像操作)
  设置图像操作是否被细分。
 可设置的值为 'yes' (是), 'int' (隔行分割), 'bidi' (双向分割), 'no'(不分割) ,如果未指定此选项,则视为指定了 'yes' 。
 吉里吉里为了有效地使用CPU的内存缓存,在绘制图像时一边进行计算,一边将图像分割成细小的区域。根据环境的不同,这可能会导致屏幕闪烁。在这些环境中,指定“no”可能会减少闪烁,但可能会降低绘制性能。如果启用了双缓冲,则建议使用细分设置,因为不细分的意义不大。
 指定为时“int”图像运算的单位将间隔处理,但在屏幕刷新时可能会看到条纹。如果选择“bidi”,则图像的运算顺序将重复“上”-“下”-“下”-“上”(如果是“yes”,则总是“上”-“下”)。
-usedb (是否使用双缓冲)
 显示图像时是否使用双缓冲。
 可设置的值为 'yes' (使用), 'no' (非必要时不使用) ,如果未指定此选项,则视为指定了 'no'。
 如果设置为双缓冲,则图像将在另一个位置(离屏位图)上绘制,在一个屏幕上绘制所有更新后,立即传输到显示区域。这样可以减少屏幕闪烁,但会降低绘图性能。
 如果不进行双缓冲,则在每个分割区域的图像运算结束时,依次传输到显示区域。
 当在Window.setZoom等中放大显示内容时,或者当吉里吉里使用-fsres选项进行缩放时,也会执行双缓冲。
  如果使用双缓冲,还可以通过将waitvsync选项设置为“yes”来进一步抑制闪烁。
 可以动态更改此选项,但不能保证值立即生效。
-dbstyle (双缓冲方式)
 设置在显示图像时使用的双缓冲方法。
 可设置的值为 'auto' (自动), 'gdi' (使用GDI), 'ddraw' (使用DirectDraw), 'd3d' (使用Direct3D) ,如果未指定此选项,则视为指定了 'auto' 。
 根据离屏位图的位置,有三种方法可以使用双缓冲:GDI,DirectDraw和Direct3D。
 如果选择'auto',则需要花费大约0.6秒的时间进行基准测试,以确定是否使用DirectDraw或Direct3D,然后选择速度更快的。 根据显卡的性能,DirectDraw或Direct3D可能无法使用smoothzoom选项指定的方法进行平滑处理,这时两种方法都将被排除在候选项之外。 GDI双缓冲通常比DirectDraw和Direct3D性能低得多,因此不会自动选择,但如果DirectDraw和Direct3D都不可用,则会自动使用GDI。
 当窗口打开或切换到全屏或从全屏恢复后,该基准测试将自动执行。
 在某些环境中,自动选择的方法可能无法正确显示屏幕。在这种情况下,必须明确使用此选项来选择方法。
 可以动态更改此选项,但不能保证值立即生效。
-smoothzoom (平滑放大)
 当在Window.setZoom中放大显示内容或使用-fsres选项放大(缩小)屏幕时,是否平滑(放大时的插值)(与在Layer.affineCopy中的放大和缩小无关)。
 可设置的值为 'no' (否), 'yes' (是) ,如果未指定此选项,则视为指定了 'yes'。
 平滑会使图像变得平滑,但会有一些模糊的感觉。如果不进行平滑处理,则图像会变得清晰,但会出现明显的锯齿。
 如果dbstyle选项为auto,则此处的指定可能会改变所使用的方法。
 在某些环境中,不平滑可能会降低性能。此外,某些环境可能无法平滑。
 某些第三方绘图设备(在Window.drawDevice属性中设置的设备)可能不受此选项的影响。
 可以动态更改此选项,但不能保证值立即生效。
-waitvsync (等待垂直同步)
 设置是否在渐变(例如,屏幕切换)之前等待显示器的垂直同步。
 可设置的值为 'yes' (是), 'no' (否) ,如果未指定此选项,则视为指定了 'no' 。
 指定'yes'可以减少屏幕闪烁,但可能会降低绘图性能。
 如果使用此选项等待垂直同步,Continuous处理程序将根据垂直同步的时间进行驱动,并忽略contfreq选项的设置。
 您可以动态更改此选项。
-aamethod (消除锯齿的文字绘制方式)
 设置消除锯齿文字绘制方式。
 可设置的值为 'auto' (自动), 'res4' (重采样4 × 4), 'res8' (重采样8 × 8), 'api' (Windows API) ,如果未指定此选项,则视为指定了 'auto' 。
 如果指定'auto' ,当前版本的WindowsNT操作系统将自动选择“api”,Win9x操作系统将自动选择“res8”。
 'res4' 或 'res8' 以几倍大小(4 x 4或8 x 8)绘制文字,然后将其缩小以实现消除锯齿效果。res4比res8更快,但精度更低。
 'api' 使用GetGlyphOutline API绘制消除锯齿的字符,但它似乎是一个非常不方便的API,在某些环境中可能无法正确绘制。
-jpegdec (JPEG图像解码精度)
 设置JPEG图像的解码精度。
 可设置的值为 'high' (高), 'normal' (正常), 'low' (低) ,如果未指定此选项,则视为指定了 'normal'。
 如果指定为'high' 则解码速度较慢,但品质较高。如果指定为“low”则解码速度较快,但品质较低。但在外观上几乎没有区别。
-drawthread (绘制线程数)
 设置绘制过程中使用的线程数。
 可设置的值为任意的数值或是'auto' (自动),如果未指定此选项,则视为指定了 '1'。
 如果指定为'auto',系统将自动分配与操作系统识别的处理器数量相同的线程。
 设置多个绘制线程可以提高多核环境中的绘制性能,但有时反而会降低性能。
 将其应用于具有较大绘图面积的处理、Affine类的高负载处理、计算复杂的层合成处理等,可能会产生较好的结果。
 如果设置为使用多线程,但系统认为绘图工作负载较轻,无法提供多线程效果,则可能不会在多线程中运行。

CPU 功能相关的选项

 以下所有选项可设置的值均为 'yes' (如果可用,则使用), 'no' (即使可用也不使用), 'force' (强制使用) ,如果未指定此选项,则视为指定了 'yes' 。
 当CPU出现识别故障时,如果设置为“no”,则不使用该功能。
 'force' 将强制使用,即使未检测到它的CPU功能,但如果CPU没有该功能,它将无法正常工作。
 只有 -cpummx -cpucmov -cpusse -cpuemmx 选项会影响吉里本体。 -cpusse 、 -cpummx 和 -cpu3dn 选项会影响OggVorbis解码器(wuvorbis.dll)。 其他(第三方)插件也可能受CPU功能设置的影响。

debug相关的选项

-debug (debug模式)
 控制吉里吉里是否在调试模式 ( → debug ) 下运行的设置。
 可以设定的值有 'no' (否), 'yes' (是)中的一个、如果未指定此选项,则视为指定了“no”。
 启用后,吉里吉里将在调试模式下运行,并启用一些调试辅助功能,但运行速度会比正常模式低。
-forcelog (文件日志)
 是否将控制台日志输出到文件的设置。
 可以设定的值有 'no' (不输出), 'yes' (追加到现有文件并输出), 'clear' (清空现有文件后输出) 中的一个、如果未指定此选项,则将视为指定了“no”。
-logerror (发生错误时输出到文件)
 错误时是否将控制台日志输出到文件的设置。
 可以设定的值有 'no' (不输出), 'yes' (追加到现有文件并输出), 'clear' (清空现有文件后输出) 中的一个、如果不指定此选项,则将视为指定了“yes”。
-debugwin (debug辅助窗口)
 是否启用调试辅助窗口(控制器、表达式监器视等)的设置。
 可以设定的值有 'yes' (是), 'no' (否) 中的一个、如果不指定此选项,则将视为指定了“yes”。
 不希望用户使用调试辅助窗口时请指定"no"。

快捷键(hotkey)相关的选项

  以下选项与吉里吉里热键相关。
  可以设置的值与可以在MenuItem.shortcut 特性中指定的字符串相同。
 如果指定一个空字符串(如果输入为空),则该功能的热键将被禁用。
 请不要指定与其他热键重复的键。

系统兼容性相关的选项

-arcdelim (存档分隔符)
 指定存档分隔符(用于分隔存档存储名称和存档存储名称之间的字符)。
 可设置的值为 '>' (使用'>'), '#' (使用'#') ,如果未指定此选项,则视为指定了 '>'。
 存档分隔符在吉里吉里2 2.19 beta 14中由以前的'#' 更改为 '>' 。
 以前运行低于2.19 beta 14的应用程序可能会因此更改而无法正常工作,但此选项允许您将分隔符更改为 '#'。
-evalcontext (后置'!'运算符行为)
 TJS2后置'!'运算符的行为。
 可设置的值为 'this' (在this上计算表达式), 'global' (在global上计算表达式) ,如果未指定此选项,则视为指定了 'this'。
 TJS2后置'!'运算符在global上下文中执行表达式,而从2.21 beta 9开始,现在在this上下文中执行表达式。
如果应用程序预期小于2.21 beta 9,则必须将此设置设置为“在global上计算表达式”才能正常运行。
-holdalpha (Layer.holdAlpha属性的默认值)
 指定Layer.holdAlpha属性的默认值。
 可设置的值为 'false' (假值), 'true' (真值) ,如果未指定此选项,则视为指定了 'false'。
 在吉里吉里2 2.23 beta 4中,为各种计算函数指定的hda(保护Alpha通道)选项废弃,而创建了Layer.holdAlpha属性。此时,Layer.holdAlpha的缺省值为true。如果Layer.holdAlpha为真,则不会影响过去的应用程序行为。
 对于吉里吉里2 2.23 beta 5,此默认值为假。吉里吉里2如果要运行预期小于2.23 beta 5的应用程序,则必须将此选项指定为“真值”,否则可能无法正常运行。
-unaryaster (前置'*'运算符的行为)
 指定TJS2前置'*'运算符的行为。
 可设置的值为 'default' (2.25以后的行为), 'compat' (2.25以前的行为) ,如果未指定此选项,则视为指定了 'default'。
 TJS2中的前置'*'运算符不通过属性处理程序来检索属性对象本身,但从2.25 beta 1开始,具有此功能的运算符变为前置的'&',而“*”前置运算符则变为属性对象的属性处理程序操作的运算符。如果应用程序预期小于2.25 beta 1,则必须将此设置设置为“与小于2.25兼容”,才能正常工作。
-dsvolfactor (DirectSound音量曲线)
 可设置的值为 '3322' (2.31 2011/6/14以后的行为), '5000' (2.31 2011/6/14以前的行为) ,如果未指定此选项,则视为指定了 '3322' 。
 DirectSound的音量曲线自2.31 2011/6/14 之后曲线更直观。