十字军之王吧 关注:197,735贴子:5,380,258

回复:【Mod开发日志】EEE 萌新Modder手搓Mod日志

只看楼主收藏回复

顶顶顶


IP属地:河南来自iPhone客户端35楼2025-03-17 09:44
回复
    好东西,支持


    IP属地:广东来自Android客户端37楼2025-03-17 12:40
    回复
      2026-01-10 12:58:41
      广告
      不感兴趣
      开通SVIP免广告
      摸摸团子~~~


      IP属地:上海来自iPhone客户端38楼2025-03-17 14:27
      回复
        yyds


        IP属地:江苏来自Android客户端39楼2025-03-17 14:35
        回复
          伟大,无需多言!


          IP属地:广西来自Android客户端40楼2025-03-17 14:35
          回复
            伟大,伟大!


            IP属地:江苏来自Android客户端42楼2025-03-17 16:44
            回复
              嗨多磨~
              这里是阿芙罗拉~
              今天给大家分享一下EEE当前的开发进度与后续的计划!!!
              在目前的构想中,EEE由两部分组成——调度器与编辑器。
              其中编辑器使用Python语言编写,负责CK3事件编辑的可视化以及代码文件的管理,是EEE的主体部分。
              同时也是我们今天要介绍的重点。
              ——————
              EEE,简易事件编辑器,顾名思义,就是用来编辑事件的编辑器(什么废话文学)。
              而CK3中我们常见的事件弹窗,由以下五部分组成:

              1、事件主题 Theme
              2、事件标题 Title
              3、事件描述 Desc
              4、事件选项 Option
              5、人物肖像 Portrait
              接下来我将会逐一对这五部分进行讲解,告诉大家这五部分是如何运作,以及EEE又是如何管理它们的。


              IP属地:北京45楼2025-03-19 13:25
              回复
                (1)事件主题 Theme
                事件主题包括事件的背景图,左上角的事件图标,顶部标题的边框,以及触发事件时所播放的音效。
                在使用代码编辑事件的过程中,一般可以使用theme = xxx主题的语句来确定事件的主题。

                而游戏在绘制事件窗口时,还会检查角色的文化、宗教等因素以更换更具风味的背景图。
                例如:同样是王座厅的背景图,西欧地区、北欧地区、中东地区或印度地区……会触发截然不同的背景,让玩家可以获得更好的游戏体验。
                虽然可以通过一些代码来覆盖某一主题原有的某些元素,或者通过mod的方式添加新的主题与效果(比如某些萌系Mod)。但鉴于EEE旨在“简易”,也就是够用就行,所以只选取并保留了游戏版本1.15.0时的86个官方主题。
                ——————
                至于说具体方法嘛……就是在游戏中分别选择86种主题,然后逐一截图作为EEE的参考图片(好麻烦)。
                用户在使用EEE编辑事件时,可以通过事件主题的组合框来选择中意的主题。(主题的英译中工作由机翻完成,如果有不准确的地方,可以在后续开放测试之后向我反馈)
                EEE便会自动切换至此主题所对应的背景图,左上角的事件图标以及顶部标题的边框,当然啦,音效是没有的。
                由于事件的背景图会随着事件发生的文化和地区发生变化,所以当玩家在非西欧地区触发事件时,其事件的背景图可能会与EEE中的背景图产生一定出入。
                以下为EEE的更改主题后的效果图:




                IP属地:北京46楼2025-03-19 13:52
                回复
                  2026-01-10 12:52:41
                  广告
                  不感兴趣
                  开通SVIP免广告
                  (2)事件标题与事件描述
                  由于事件标题和描述的功能十分接近,所以就合并到一起说了。
                  标题和描述就是事件的文本部分,但编辑器中的文本到最终呈现在玩家眼中的文本之间其实存在着多个环节。
                  1、文本的本地化
                  CK3的文本本地化是基于某种【键值】→【字典】→【本地化文本】的模式运作的。
                  事件txt里面提供键值,游戏运行过程中则会拿着事件的键值,到玩家当前设置的语言的字典中去寻找该键值对应的本地化文本。
                  我举个例子,比如事件的描述问题为:
                  desc = event.001.desc
                  然后在所有的本地化字典中,都会有一段对应的本地化文本,例如:
                  中文的本地化yml文件中会显示:
                  event.001.desc:0 阿芙罗拉是个萌新模组制作者。
                  而英文的本地化yml则会显示:
                  event.001.desc:0 Aurora is a super noob。
                  日本的本地化yml则会显示:
                  event.001.desc:0 阿芙罗拉は馬鹿です!!!

                  所以用户所键入的文本都会被存入事先设置好的对应语种的本地化yml文件里。目前EEE已经实现了对单一语种的输入编辑,并自动生成键值,然后在对应的语言下面生成本地化文本。
                  后续打算尝试一下是否可以通过引入在线翻译,或者本地化部署词典甚至DeepSeek的方式对文本进行自动机翻,这样一来,事件只要写完,就自带多语种翻译啦!
                  不过这个饼稍微有点大,未来有机会再说吧(抱头蹲防)。


                  IP属地:北京47楼2025-03-19 14:04
                  回复
                    2、条件文本
                    所谓的条件文本,就是相同的一段文字,在不同的条件下会显示不同的文本。
                    例如游戏中的骑士一词,会因为文化和地域的不同,出现诸如:勇士、巴图鲁的别称。这就是很典型的条件文本。
                    以及稍微复杂一点的,比如事件中有一句话:“要知道,你可是我的xxx啊。我怎么会害你呢?”,这里的XXX可以是女儿,可以是父亲、可以是丈夫也可以是情人,需要根据两个角色之间的关系来进行判断。
                    再比如我之前写过但是很快就被官方封了的某mod,因为存在有大量软硬件不同的情况,所以里面也大量用到了条件文本,比如钢板类型的角色就不能用诸如“柔软”、“陷入”一类的词语,对吧?(咳咳咳)
                    ——————
                    虽然说条件文本其实并不算难,但问题在于,如何简单地让并不太了解编程的一般玩家可以顺利写出可以满足需要的条件文本就有些困难了(叹气)。
                    目前我还没有特别好的想法,相关的辅助功能模块目前也还没有提上日程。只能等EEE的主体框架和主要功能都差不多完善之后再解决这个问题吧(开始画饼)。


                    IP属地:北京48楼2025-03-19 14:12
                    回复
                      (3)事件选项
                      事件选项其实也可以看做是一个类似事件标题和事件描述的文本。
                      但它相较于前者,有两个特殊之处:
                      1、数量限制
                      2、触发效果
                      ——————
                      1、数量限制
                      每个事件所能设置的事件选项是有限的,我在CK3测试的结果是一个事件最多只能有10个选项。但过多的选项会极大地挤占事件描述的面积,导致事件界面失去平衡与美感。
                      所以在EEE里面,我给事件加了一条限制,即最多只能有5个选项。
                      当然啦,如果需要写超过5个以上的选项分支,可以等后续事件链功能开发完成后,设置成一个事件有4个选项+1个跳转选项的组合,通过多个事件组成循环的方式获得任意数量的选项分支。
                      差不多就是下图的这个样子。

                      ——————
                      2、触发效果
                      众所周知,玩家在CK3的事件中选择不同的选项会产生不同的效果,可能是获取/损失金钱、威望和虔诚,也可能是触发新的故事分支,甚至有可能会出现NTR乃至角色死亡。
                      其实除了点击选项触发效果之外,CK3的事件还有其他的效果触发时机。
                      为了方便大家能够理解并,我在这里给大家讲解一下事件的大概运作流程:
                      如图所示:

                      ——————
                      如果觉得太抽象,我还可以举个例子:

                      这里的on_trigger_fail,immediate,option以及after就是CK3中文wiki里面提到的【效果effect】而trigger则是【触发器trigger】,如果你有过编写CK3 Mod的经验就一定能明白我在说什么。
                      所以在EEE中预留了输入端口,用于编辑以上的内容:
                      如果所示,在事件预览框的两侧,就是用来输入代码的区域。
                      EEE可以将里面的代码按照标准格式进行储存,方便后续游戏进行识别与载入。

                      但就像之前条件文本里面遇到的难题一样,EEE同样面临着如何将成百上千的效果语句和触发条件以及由此可以衍生出的各种组合情况以一种简单直观,操作便捷的方式呈现到没有编程基础的玩家面前。
                      这也是后续辅助功能系统的重头戏(想想就可怕的工作量,悲)


                      IP属地:北京49楼2025-03-19 14:41
                      回复
                        (4)人物肖像
                        CK3的事件界面,最多支持5个肖像,分别是左右两个支持动画效果大型人物肖像,以及底部三个不能动的小型人物头像

                        CK3相较于前一代,很大的一个特点就在于事件里的人物表现形式由原本的图片头像变为了3D动画模型。
                        而为了加强事件的演出效果,P社给人物预设了大量的姿态与动画。但是在实际编写事件的过程中,Modder们经常会遇到两个问题:
                        1、不知道有哪些可用的动画
                        2、不知道这些动画的效果是什么,只能一个一个参数扔进去试。
                        哦,天哪,这简直太可怕了(抖抖抖)
                        为此,我针对以上两个痛点,在游戏文件中找到了游戏内预设的动画列表,并且将预设的动画逐一放入到事件中测试效果并截图,然后扔到PS里面把背景扣掉后再扔进EEE里面作为肖像的动画截图。
                        截止至1.15.0版本,游戏内有两百多个预设动画,我在删减掉部分效果类似的动画后,截取了其中199个动画截图。
                        然后由于左右两个肖像是同一个姿态用不同拍摄角度生成的,所以工作量还得翻倍。
                        最后的成果是一男一女两个角色,男性在左,女性在右,总共有398个动画截图,然后在用PS一个个抠掉北京,最后加入到EEE中……这是我在开始EEE这个项目之后,工程量最大且最无聊而机械的工作了(吐魂)。
                        当然啦,之所以会费这么大的功夫在上面,自然是因为在前期的技术性论证的时候,发现这一套处理下来,效果真的不错。

                        同时肖像动画根据官方文档里的分类增加了前缀,方便用户使用时进行挑选。
                        有一些动画的持续时间较长,所以只能截取了动画过程中的某一帧,使用时还是需要根据文字描述与实际效果进行选择。
                        至于说底部的三个肖像,大概会在人物表功能完成后再进行追加。


                        IP属地:北京50楼2025-03-19 15:13
                        回复