十字军之王吧 关注:201,230贴子:5,479,579

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

取消只看楼主收藏回复



IP属地:北京1楼2025-03-17 00:25回复
    嗨多磨~
    这里是阿芙罗拉desu!!
    超级萌新的CK3 Modder一枚。
    好久不见啦~
    阿芙我啊,在过去一年里,被工作、游戏以及懒惰占据了大量的时间和精力,直到春节放假才得几日闲暇去重新将过去的一些有趣的设想重新捡拾起来。也就是我一会儿要介绍的新Mod(开发中)。


    IP属地:北京2楼2025-03-17 00:27
    回复
      2026-05-05 17:27:42
      广告
      不感兴趣
      开通SVIP免广告
      在正式介绍我最近开发的Mod之前,请容许我先卖个关子。
      我想先问一下各位,你有没有觉得游戏里似乎总是缺少那么一丝味道?
      求爱成功的最后一步,不是杀狼就是杀强盗然后抱得美人归。
      出门喝个酒就莫名其妙地多了个不知道从哪蹦出来的朋友。
      每次开朝会都是些不痛不痒,鸡毛蒜皮的破烂事。
      孩子在成年之后,就几乎再没跟父母有过交流。
      一群除了密谋、反叛以及跟皇帝唱反调之外就没啥别的存在感的反骨封臣。
      一介平民突然被皇帝一纸命令加封为一国之王后,就顺理成章地成为了贵族,自顾自地潇洒快活起来了。
      以及最奇怪的,被各种不明来路的老头、渣男、流浪汉睡了老婆闺女之后,除了费劲巴拉地把人刀了之外,什么都做不了的皇帝陛下。
      游戏玩到后面,总是开着快进,等到弹出事件时大概扫一眼就知道发生了什么事,然后条件反射般地选择事件的最优解。
      我相信看完这段话的你能够理解我想要表达的意思。
      CK3有着一个不错的框架,但还缺少很多血肉与细节,就像是一具会走路的骷髅。
      简而言之,我会说CK3这款游戏现在缺少事件,而且是缺少非常非常非常多的有趣事件去填充框架,丰富内容……总不能全指望着玩家自己脑补吧?
      但与此同时,你也不能指望某些瑞典的懒驴来完成这些工作吧?
      甚至不能指望我这样的懒狗去写那么多的事件Mod(况且这实在是太残忍了)。
      俗话说:“扫帚不到,灰尘照例不会自己跑掉。”
      可想要玩到有趣的故事,总归是需要有人来写故事的。
      可又该由谁来写呢?谁又有那么大的本事能解决当下玩家们日益增长的有趣故事需要和游戏事件Mod不充分发展之间的矛盾呢?
      答案是解铃还须系铃人。
      就像是教员说过的那样:“人民,只有人民,才是创造世界历史的动力。”


      IP属地:北京6楼2025-03-17 00:35
      回复

        想必这时候就该有小伙伴蹦出来说了,我是想要写事件Mod,可是我不懂编程,也看不懂代码啊。
        库库库,说到这里,就是我现在正在做的工作了。


        IP属地:北京7楼2025-03-17 00:36
        回复
          下面由我来向大家隆重介绍,本人正在开发的苏帕Mod……EEE!!!
          所谓的EEE就是Easy Event Editor——“简易事件编辑器”的缩写……当然啦,如果你愿意翻译成成Edit Event Easily也是完全没有问题的。
          如果说,你要写的事件长这样。

          这样。

          或者这样。

          我相信大部分没有编程基础的人立刻就会感觉头昏眼花,头皮发麻。心里头开始打退堂鼓了。


          IP属地:北京8楼2025-03-17 00:44
          回复
            但如果我说,你要写的事件长这样。

            还有这样。

            你是不是就感觉有点自信了呢?
            阿芙我现在开发的EEE这个Mod的功能其实非常简单,就是让我们不用很累很麻烦地写出一个可以被游戏识别并触发的事件编辑器。
            一个帮助广大有想法、有故事以及强烈创作欲的CK3玩家,迈过名为“代码"的门槛的小Mod。
            我对P社玩家的文字阅读能力是毫不怀疑的,因此,我相信,如果你是一名喜爱P社游戏的玩家,且有意愿和动力去书写属于自己的故事的话。那么EEE一定可以帮你实现愿望(大概)。


            IP属地:北京9楼2025-03-17 00:48
            收起回复
              好啦好啦,今天先开个头,之后我会给大家分享一下目前的开发进度,未来的计划,以及征求各位玩家的意见和建议。
              晚安~


              IP属地:北京10楼2025-03-17 00:51
              回复
                嗨多磨~
                这里是阿芙罗拉~
                今天给大家分享一下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
                回复
                  2026-05-05 17:21:42
                  广告
                  不感兴趣
                  开通SVIP免广告
                  (1)事件主题 Theme
                  事件主题包括事件的背景图,左上角的事件图标,顶部标题的边框,以及触发事件时所播放的音效。
                  在使用代码编辑事件的过程中,一般可以使用theme = xxx主题的语句来确定事件的主题。

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




                  IP属地:北京46楼2025-03-19 13:52
                  回复
                    (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
                          回复
                            部分肖像动画的截图:


                            IP属地:北京51楼2025-03-19 15:15
                            回复
                              2026-05-05 17:15:42
                              广告
                              不感兴趣
                              开通SVIP免广告
                              ——————
                              好了,上面絮叨了这么多话。下面就由我给大家展示一下EEE在当前完成度下所能做到的事情。
                              下图EEE的编辑界面。
                              我仅负责填写事件的标题、描述、选项的文本以及一些效果相关的代码后便点击保存。

                              下图是游戏内触发的,完全由EEE编写的事件。

                              可以看到除了左侧人物的位置稍微有些偏右之外,游戏内的事件跟EEE编辑器的事件基本一致。
                              ————————
                              目前EEE已经实现了编写单个事件的功能,包括事件的编辑、存储与读取。
                              具体的效果代码尚无辅助功能,需要用户在对应的位置自行填写效果代码。


                              IP属地:北京52楼2025-03-19 15:24
                              回复