吉里吉里Z中吉里吉里2的变更点一览

以下更改是关于初始正式版本的。
后续版本可能对此进行了进一步的更改。
有关1.0 或更高版本的更新,请参见更新履历


  1. 已更改为可在Visual Studio中构建。
  2. 为了能在Visual C++2012中构建用C++Builder5构建的吉里吉里2,进行了各种更改。

  3. VCL依赖部分已更改为Win32 API调用处理。
  4. 在VC中,由于无法使用VCL,因此更改为使用常规的Win32 API处理。
    虽然在某种程度上是等价的处理,但由于不是相同的实现,所以细节的动作有不同的部分。
    在VCL中,不可见的主窗口作为应用程序(窗口)运行,其他窗口作为其子窗口运行。
    在吉里吉里2内,第一个创建的窗口被视为主窗口,但内部存在不可见的应用程序(窗口)。
    在吉里吉里Z中,随着VCL的重写,这个不可见的应用程序(窗口)已经不存在。
    因此,在应用程序的行为中存在细节不同的地方。
    作为应用程序处理的东西中有几个相当于最初生成的吉里吉里内的主窗口。
    应用程序中的活动/非活动事件与主窗口相同。

  5. 已将Direct3D7 更改为 Direct3D9 。
  6. 由Direct3D7 绘制的内容被更改为 Direct3D9 。
    随之进行了以下变更。

  7. 已将全屏操作更改为在DrawDevice中执行。
  8. 基于DirectDraw的全屏化,似乎在Windows8中引起了一些问题,所以这部分需要进行变更,Direct3D9中Direct3D Device负责全屏化,因此全屏化处理采用了DrawDevice端处理的实现。
    如上所述,随着Direct3D9化,全屏化从API/DirectDraw变为API/Direct3D9,依赖的并非是选项而是DrawDevice。

  9. 将KAGParser类更改为插件。
  10. 原来觉得作为插件比较好的类,所以转到插件。
    此插件是为了兼容性而创建的。

  11. 将Menu 类更改为插件。
  12. 已将Menu移到插件,不建议使用。
    建议今后使用无菜单的程序。

  13. 更新各种依赖库。
  14. 创建VC项目时更新到最新版本。

  15. 正则表达式引擎改为鬼车。
  16. 因为是boost较早版本的东西,所以改成了鬼车。

  17. 将向控制台的输出变更为向命令行的输出,调试时也输出到debug输出。
  18. 随着控制台的删除,改为输出到命令行。
    调试时,能看到debug输出调试会更容易,因此debug构建中也输出到debug输出。

  19. Font 变为可以构造了。
  20. 虽然只作为Layer.font存在,但可以独立生成。

  21. 工具提示处理的标准变更。
  22. VCL的工具提示不是公共控件的工具提示,而是各自实现,所以考虑是替换为公共控件,还是以同样的方式实现,发生事件后变更为可以作为Layer绘制的形式。
    设置Layer.hint,当光标停止一定时间并到达提示显示定时时,发生Window.onHintChanged 事件。
    光标停止时间可在Window.hintDelay 中指定。
    对绘制提示的层,启用 Layer.ignoreHintSensing 以忽略提示显示。
    这样,在 onHintChanged 中 isshow 为 true时,将提示绘制在最前面层,如果将提示层设定为忽略鼠标消息,则能够进行与以往相同的方式显示。 の時、ヒントを最前面レイヤーに描画し、ヒントレイヤーはマウスメッセージは無視されるように設定すれば従来と同じような表示が出来る。
    isshow 为 false 时发生事件时就隐藏显示。
    这是GitHub 样例

  23. 已将“启用/禁用手柄”设置为命令行选项。
  24. 由于也有没有加入的手柄支持比较好的情况,所以不仅是选项,用编译选项也可以使其无效化。
    指定DISABLE_EMBEDDED_GAME_PAD以禁用。

  25. 将JPEG解码时使用LLM转换设为默认值。
  26. 吉里吉里2中,标准画质的时候使用AAN,但是AAN质量较低,所以以LLM为标准。
    吉里吉里Z中JPEG的读取速度比吉里吉里2快很多,即使将IDCT的算法从AAN变更为LLM,也会比吉里吉里2更快地解码。
    因为LLM通常更常用,因此在吉里吉里中显示时出现模糊的情况会减少。

  27. 已将TJS2脚本的默认字符编码更改为UTF-8。
  28. 因为UTF-8更通用,所以改变了默认的Shift-JIS。
    如果附上TVP_TEXT_READ_ANSI_MBCS进行编译,则与过去一样,Shift-JIS为默认值。
    Plugin公有函数的TVPCreateTextStreamForReadByEncoding的第三个参数可以指定编码。
    指定“Shift_JIS”或“UTF-8”。
    此外,可以通过在选项“-readencoding”中指定“Shift_JIS”或“UTF-8”来更改默认值。
    您可以在Scripts.textEncoding 中指定“Shift_JIS”或“UTF-8”。
    插件KAGParser也遵循此设置。
    如果插件更改调用TVPCreateTextStreamForReadByEncoding的位置,则可以以任意编码读取。

  29. 将嵌入源码字符串移动到资源。
  30. 将直接在源代码中描述的字符串(如错误消息)移动到资源中,并以日语和英语分离。
    由于消息、资源和源码是通过脚本自动生成的,因此在其他环境中实现时更容易进行迁移。
    记录在Messages.xlsx中,在gentext.bat中生成。
    许可证描述在资源的license.txt中。

  31. 将编译后绑定到二进制文件的选项移动到资源。
  32. 将以往tvpwin32.exe中optionarea.bin结合到末尾,变更为krkr.eXe将运行时读取的末尾的二进制文件嵌入到资源中的形式。
    选项在optionarea.txt中用换行分隔来记录。
    因为是常见的构造,所以可以期待通过杀毒软件等减少误检测。

  33. 随着多显示器的应对,改变屏幕尺寸等返回的值。
  34. 以前总是返回主显示器的值,现在改为返回考虑了多个显示器的值。
    System.screenWidth / screenHeight 返回主窗口所在的显示器的大小。在主窗口创建之前按主显示器的大小返回。
    System.desktopLeft / desktopTop / desktopWidth / desktopHeight 返回主窗口所在显示器的工作区。如果没有主窗口,则返回主显示器的工作区。

  35. 字体选择器脚本化。
  36. 从主体中删除,改为win32dialog.dll + 脚本实现。
    脚本位于 GitHub 中。

  37. 字符输入对话框脚本化。
  38. 从主体中删除,改为win32dialog.dll+脚本实现。
    脚本位于 GitHub 中。

  39. 将启动文件选择器更改为文件夹选择器。。
  40. 将使用VCL的独有对话框更改为文件夹选择对话框。

  41. 在调试选项中将启动文件选择更改为可禁用。
  42. 不希望此功能在最终发行版中使用,因此改为可禁用。
    通过定义TVP_DISABLE_SELECT_XP3_OR_FOLDER将其禁用。

  43. 多字节码更改为宽(UNICODE)字节码。
  44. 因为只支持NT系统,变更为宽(UNICODE)字节码。

  45. -waitvsync属性化
  46. 命令行选项-waitvsync已过时,改为Window.waitVSync
    这是因为每个Window都有D3DDevice,垂直同步等待依赖于该设备。

  47. 已将PassThroughDrawDevice更改为BasicDrawDevice。
  48. 废除了使用DirectDraw / Direct3D / GDI进行基准测试并使用其中任何一个进行绘制的PassThroughDrawDevice,并添加了使用Direct3D9进行绘制的BasicDrawDevice。
    DrawDevice的标准是BasicDrawDevice。
    如果要使用Direct3D9以外的内容进行绘制,则需要通过插件进行添加。

  49. 将选项说明JSON化,移动到资源。
  50. 将自定义格式的说明文件更改为JSON。
    另外,将文件移动到资源,从插件的读取也从公开函数变更到资源。
    可以在option_desc_j.json中指定。
    在-userconf中启动时,根据该文件显示设置项。

  51. 支持大于2GB的XP3文件。
  52. 吉里吉里2修正了读取时出现的错误,使其能够读取超过2GB的XP3文件。

  53. 不需要重新生成窗口。
  54. 在吉里吉里2中,全面屏幕化时边框样式变更时,窗口被重新生成,但在吉里吉里Z中不再进行重新生成。
    因此TVP_WM_DETACH和TVP_WM_ATTACH被调用的机会几乎消失。
    为了了解全屏化/窗口化的时机,现在在全屏变更之前调用TVP_WM_FULLSCREEN_CHANGING,在变更之后调用TVP_WM_FULLSCREEN_CHANGED。(请注意,它不能确定是否为全屏)

  55. 插件公有函数的增加或减少。
  56. 增加了以下的公有函数。
    TVPCreateTextStreamForReadByEncoding
    TVPSetDefaultReadEncoding
    TVPGetDefaultReadEncoding
    TVPRegisterAcceleratorKey
    TVPUnregisterAcceleratorKey
    TVPDeleteAcceleratorKeyTable
    TVPEnsureDirect3DObject
    TVPGetDirect3DObjectNoAddRef
    TVPChBlurMulCopy
    TVPChBlurAddMulCopy
    TVPChBlurCopy

    以下的公有函数被删除了。
    TVPMIDIOutData
    TVPEnsureDirectDrawObject
    TVPGetDirectDrawObjectNoAddRef
    TVPGetDirectDraw7ObjectNoAddRef
    TVPGetDDPrimarySurfaceNoAddRef
    TVPSetDDPrimaryClipper
    TVPReleaseDDPrimarySurface

  1. 控制台删除
  2. 因为最好排除出最终发布的内容中所以删除了。

  3. 控制器删除
  4. 因为最好排除出最终发布的内容中所以删除了。

  5. MIDI/CDDA/Pad类删除
  6. 考虑到目前的情况,我们认为这是一个较旧功能,因此将其删除。

  7. Win9X方法删除
  8. 已删除API以支持XP或更高版本。

  9. 删除DirectDraw绘制处理
  10. 已删除有问题的DirectDraw支持驱动程序的和旧API。

  11. 删除ERI格式支持
  12. 因为在现状下找不到使用的意义,所以删除。

  13. 删除Window类中的一些方法。
  14. 删除的方法/属性如下所示。
    Window.layerLeft / Window.layerTop / Window.setLayerPos
    Window.innerSunken
    Window.showScrollBars
    Window.beginMove

  15. 删除Layer类的obsolete方法。
  16. 因为以前就建议使用新方法替换obsolete,所以删除了。
    被删除的方法如下所示。
    Layer.affineBlend
    Layer.affinePile
    Layer.blendRect
    Layer.pileRect
    Layer.stretchBlend
    Layer.stretchPile

  17. 已删除鼠标光标中Windows标准不支持的内容。
  18. 已删除C++Builder标准但非Windows标准的内容。
    被删除的光标有 crDrag、crNoDrop、crHSplit、crVSplit、crMultiDrag、crSQLWait、crAppStart、crHBeam 。
    必要时,需要自行添加资源。
    此外,其他图标与C++Builder的外观也略有不同。
    支持的光标在这里(图片仍为吉里吉里2)

  19. 删除 krflash.dll
  20. 不再附带krflash.dll。
    如果拿着吉里吉里2的东西的话有可能可以使用,但是官方不支持。
    建议迁移到flashPlayer插件。

  1. 支持多点触控功能。
  2. 如果启用了支持多点触控的设备,则会启用触控。
    如果只支持单点的触摸,即使和鼠标输入一样处理也没有问题,所以触控无效。
    如果不想触控处理,而是想要始终和鼠标一样处理的话,需要将Window.enableTouch设为false,使触控无效化。

  3. 添加了Bitmap/ImageFunction/Rect类。
  4. 由于希望获得仅保留图像的Layer类的要求,新设了Bitmap类。
    添加ImageFunction和Rect类,以实现与Layer分离的所需功能。

  5. 增加Octet.unpack 与 Array.pack 方法。
  6. 吉里吉里2预定而没有被添加的功能。
    这样就容易进行二进制文件的读入、写出。
    请参阅字节串相关操作Array 类

  7. -startup=“xxx”允许从任何脚本启动。
  8. 因为测试是能指定方便而添加。
    有关详细信息,请参见命令行选项

  9. 支持5键鼠标“后退”和“前进”键。
  10. 在Windows 2000或更高版本中添加。
    可以在Window.onMouseDown等上使用。

  11. 支持后台图像读取功能。
  12. 因为现在的同步读入有在一边更新图像一边读入的时候,显示在读入时停止这样的问题而添加。
    通过非同步读取,不停止显示的更新,就可以读取下一个图像。 异步读取通过 Bitmap.loadAsync 进行。

  13. TJS2类继承现在可以用native(C++)编写。
  14. C++中也可以编写TJS2类的继承会更好,因此添加。

  15. 添加drawGlyph,使外字的绘制变得容易。
  16. 添加可在字符串中嵌入任意字形,以便于绘制。
    可以用Layer.drawGlyph / ImageFunction.drawGlyph 进行绘制。

  17. 增加了PNG/JPEG/TLG存储功能。
  18. 因为能读入,和其对应地保存功能也添加。
    在本体能进行BMP/PNG/JPEG/TLG的读写会更方便。
    Layer.saveLayerImage / Bitmap.save 的type参数可以指定Bitmap以外的形式。

  19. 添加FreeType字符绘制。
  20. 虽然吉里吉里2只有基于GDI的文字绘制,但吉里吉里Z中也支持基于FreeType的绘制。
    可以在Font.rasterizer 中指定。
    可以预期比GDI更漂亮的文字描绘。

  21. 添加日志处理程序。
  22. 添加日志处理程序以使日志可在脚本中处理。
    可由Debug.addLoggingHandler / removeLoggingHandler / getLastLog 处理。

  23. 添加字符串实际绘制范围获取方法。
  24. 根据字体在指定位置漂亮地绘制也存在困难的情况,因此添加了字符串的实际绘制范围取得方法。
    可通过FFont.getGlyphDrawRect 获得。

  25. 删除线和下划线的实装。
  26. 实装了吉里吉里2中未实装的删除线和下划线。
    由此可以绘制包含删除线和下划线的文字。
    可以在Font.strikeout / underline 中指定。

  27. Opus音乐格式支持。
  28. kropus.dll支持比Vorbis更高压缩率的Opus音乐格式
    即使是较短的声音文件大小也会变小,所以也易用于音效等。
    另外,由于还具有音乐最优化的压缩方法,所以可以通过台词等发挥效果。

  29. 附带吉里吉里调试器。
  30. 与以往分别发布的吉里吉里调试器一起提供,启用调试的二进制文件也包含在内。
    更易于调试TJS2脚本。

  31. 添加脚本异常时启动的编辑器。
  32. 由于删除了显示内容的异常发生时使用的Pad,因此可以指定任意的编辑器作为其替代。
    可由-exceptionexe和-exceptionarg指定。
    有关详细信息,请参见命令行选项