甜蜜女友2吧 关注:14,380贴子:59,077

关于甜蜜女友2和2+的游戏系统

只看楼主收藏回复

感觉叫《甜蜜女友2和2+的游戏系统的初步研究》有些言过其实了,充其量只是一些牛马活,若有冒犯,实属无意,希望大佬能放过。这个帖子主要是分享我近来所学所做的一些关于甜蜜女友2/2+的东西,希望能借此讨论相关问题,也希望能够帮到想了解这些的人的忙。
起初我只是想找甜2+的立绘,然而当时并未能找到答案,所以去了解了一系列相关的知识,尝试自行摸索,最后将其整理。谨以此作为礼物,祝贺结灯生日快乐。


IP属地:北京1楼2025-01-15 21:40回复
    一、关于立绘
    甜蜜女友2、甜蜜女友2PE和甜蜜女友2+都使用了动态立绘,前两者还使用了静态立绘。
    对于静态立绘,使用解包工具解包游戏的image文件即可得。我目前发现了一个能用于拼接静态立绘和CG的工具:https://moeblog.cn/338.html。需要注意的是甜2(PE)的某些立绘图层在叠加时会使用其它的混合模式,导致compose.exe所合成的立绘与游戏中显示的不符(如结灯的围巾阴影部件),但位置是没问题的。
    对于动态立绘,从甜蜜女友1开始海豹社就引入了E-mote来实现,然而由于甜2(非PE版)的动态立绘文件完成度很低,所以只有眼睛和嘴能动。但不管怎么样,甜2、甜2PE和甜2+的动态立绘系统组成是大同小异的。与之相关的游戏文件有psz.int、m2config.int等,其中psz.int解包后得到的psz文件就是动态立绘所在的地方,m2config则存放与动态立绘配置相关的文件。获取动态立绘的方法可以参考这三篇帖子:https://bbs.kfmax.com/read.php?tid=986883&sf=9a0&fpage=0&toread=&page=1https://www.kungal.com/zh-cn/topic/1774https://www.kungal.com/zh-cn/topic/1856


    IP属地:北京3楼2025-01-15 22:03
    收起回复
      补充被吞的参考文献和工具:


      IP属地:北京4楼2025-01-15 22:10
      回复
        参考文献和工具发不出来,算了,放网盘里了。


        IP属地:北京5楼2025-01-15 22:12
        回复
          二、关于游戏引擎
          甜蜜女友2系列用Catsystem2制作。Catsystem2的官网(CatSystem2 Web (suki.jp))是这么介绍的:
          CatSystem2(CS2)使用Direct3D 技术,能够实现独特的 3D 显示和演出效果,但基本上不需要深入的 3D 知识。
          在创建冒险部分时,使用称为场景脚本的演出脚本。复杂的按钮控制和存档加载等功能则通过称为画面脚本(fes)的另一个脚本进行处理,因此脚本编写者可以专注于游戏本篇的演出部分。
          我按照官方文档画了如下表格。
          甜蜜女友2业务功能的实现主要在fes(后缀名.fes)和scene(后缀名.cst)两类数据中。不准确的说法是fes文件主要用来处理人机交互,cst文件负责剧情的控制和演出。


          IP属地:北京6楼2025-01-15 22:25
          回复
            游戏中的主要文件在官方文档中基本能找到对应。而官方文档都是日文,网上教程非常少,对于我这种不懂日语的技术小白来说很不友好,所以用机翻看了主要部分。



            IP属地:北京7楼2025-01-15 22:32
            收起回复


              IP属地:浙江8楼2025-01-15 22:45
              回复
                三、关于CG
                CG存放在image00.int和image01.int中。然而解包出的CG图片大多数并不是完整的,有些CG图片只有眼睛、嘴、某个部位等,有些CG则刚好缺少这些部位,结合文件名,容易想到这是为了作差分处理,而且文件名自带坐标进行定位。那么这些文件如何组合?由之前Catsystem2的定义文件cglist.dat可以知道。
                对于甜2+,与CG注册相关的文件有5个,存于config.int:cglist.dat、cglist_i.dat、cglist_l.dat、cglist_n.dat、cglist_o.dat。


                IP属地:北京9楼2025-01-15 22:45
                回复
                  看起来很专业,顶下


                  IP属地:广西来自Android客户端10楼2025-01-15 22:48
                  回复
                    后4个.dat文件的区别如下。


                    IP属地:北京11楼2025-01-15 22:50
                    收起回复
                      可以发现,这些以“_1”为命名后缀的CG都是CG鉴赏缩略图所用CG,且其它差分都是在此基础上用其它图片叠加所得。但CG鉴赏里有些CG播放的顺序与cglist里注册的顺序并不相同,与游戏中出现的顺序也不相同。
                      对于CG“e_yuuP01”,cglist.dat中“e_yuuP01”出现次数为115(含1个框名称),cglist_i.dat和cglist_I.dat中为58(含1个框名称),cglist_n.dat和cglist_o.dat中为58(含1个框名称),因为这组CG无爱心眼差分,所以i和I,n和o的数量分别相同,而每个有()毛差分都对应1个无()毛差分,所以这两对的出现次数相同,57(有()毛CG数量)+57(无()毛CG数量)=114。
                      虽然dat注册的CG数量有57,但游戏中CG鉴赏只出现了32张,原因在于CG鉴赏模式的注册规则(https://cs2.suki.jp/manual/data/setup/cglist.html)“通常,在CG鉴赏模式中能够查看的CG,只有那些已经在CG列表表格中设置并且在游戏中展示过的。”


                      IP属地:北京13楼2025-01-15 23:00
                      回复
                        cst文件在调用这些CG鉴赏登录的cst文件时使用call命令:


                        统计e_yuuP01的cst文件数,总共有57个,等于cglist_i.dat/cglist_I.dat/cglist_n.dat/cglist_o.dat中注册的CG数。被call命令调用的文件数有32个,与CG鉴赏中的数量相等。


                        IP属地:北京14楼2025-01-15 23:04
                        回复
                          通过以上分析可以知道哪些差分图片组合是在CG鉴赏里出现的了。至于CG合成的方法,使用之前提到的工具compose.exe(https://moeblog.cn/338.html)比较方便。而手动合成也不难。
                          对于组合e_yuuP01N,1,2,由e_yuuP01N,1选出图片e_yuuP01N_1和e_yuuP01N_02x309y174(搜索关键字e_yuuP01N_02)。由文件名可知差分图片的放置坐标是(x,y)=(309,174),参数从左到右对应图片从下到上叠放——“具有相同基础名的文件会按差分名位数较少的顺序进行叠加显示。”(https://cs2.suki.jp/manual/data/image/plural.html


                          IP属地:北京15楼2025-01-15 23:11
                          回复


                            IP属地:浙江来自Android客户端17楼2025-01-15 23:19
                            回复
                              没细看但感觉好厉害()


                              IP属地:浙江来自Android客户端18楼2025-01-15 23:38
                              回复