这几天赶着把事件补了补,基本上是一个能用的状态了,大家可以下载下来尝试一下捏
(链接在评论区,有github等两个链接方便大家取用)
![]()
github主页
1.v0.03更新内容
事件的词条从原先我用来测试的42条扩充至了87条,包括了3.14以前的全部起源,以及游戏中的大部分事件(宣战、胜利、谍报、科研等等),基本上已经可以用了
修正与增强:事件占位符处理和实体生成逻辑小幅改进,提高生成连贯性。
增加了错误指令格式的处理
新增:命令行支持年度标记过滤选项(可选择包含或过滤 timeline_event_year 年度标记条目)。
效果展示:
![]()
未开启过滤
![]()
开启过滤
基本上已经是一个可以使用的状态了,欢迎大家多多使用,给我反馈,帮助我补全代码
2.使用教程
本项目的使用教程在前篇v0.02的发布和GitHub主页上已经有了很详细的论述,这里就不再水文章了,大家可以参考前篇(传送门:想看到自己的帝国史诗?群星帝国时间线解析器v0.02发布!)
在v0.03版本中,增加了一个控制是否开启过滤的功能,因此命令行的调用方式出现了一些改变,具体如下。
2.1 交互式命令行
在命令行中输入
python stellaris_chronicle_generator_v0.03.py gamestate.txt
其中的gamestate.txt为存档txt名称,则会启动交互模式,命令行中,程序会询问玩家帝国的名称和是否过滤,用于程序的执行,如图。
![]()
交互模式
2.2 通过命令行参数运行
在命令行中输入
# 交互模式跳过提示(一次性输入帝国名和包含标记选项
python stellaris_chronicle_generator_v0.03.py gamestate.txt "泰拉联邦" yes
# 非交互仅指定帝国名(仍会使用默认包含年度标记,除非提供第三个参数) python stellaris_chronicle_generator_v0.03.py gamestate.txt "地球联合政府"
# 指定不包含年度标记(适合生成更紧凑的编年史) python stellaris_chronicle_generator_v0.03.py gamestate.txt "地球联合政府" no
则可以直接在本文件夹下解析产生结果。
2.3 错误指令处理
如果用户在输入时输入了不合法的指令,则会抛出提示:
![]()
错误提示
直接复制其中的示例代码运行即可,目前我还在想办法将其修改得更低门槛,大家可以先期待着~
3.原理解析(代码在文末,可以跳到文末直接获取)
帖主其实是首先从游戏的角度定位了这个时间线可能保存在文档中,在游戏过程中,大家可以观察到这个帝国时间线系统实际上只有玩家有,在一局游戏结束切换国家,或者使用代码在游戏过程中切换国家时,时间线都是重新生成加载的,因此,相关内容必然仅存在于玩家存档里。
![]()
在寻找后,定位到游戏存档内“timeline_events=”类下,具体组成如图:
![]()
可以观察到,该大类下的子类包括了事件(e.g.timeline_encountered_leviathan),对象代码(data= { 0 39 }),时间代码(date= "2207.01.01")。只需要实现在存档中快速定位,查找,并根据代码解析即可。
随后的工作就是很常规的数据解析操作了。帖主是使用re包进行快速搜索定位timeline_events项,随后使用一个非常朴实无华的大括号计数的方法找到了该类的结尾,在timeline_events类内使用正则表达式进行解析。
4.下一步更新计划
考虑到沟槽的P社在9.22就要更新DLC,帖主非常担心到时候大量的事件会无法解析,故此就没有再进一步更新事件数量的打算。
目前,该项目的应用还是有一些门槛的,帖主决定还是先进行GUI界面的开发,打包成exe供大家更方便的使用(预计下周发布!)
![]()
开发中
目前功能基本已经实现了,只不过动效和字体还是存在一些问题,请大家期待后续的更新!
最后,如果对大家有帮助的话,大家可以电电我的牛牛或者在GitHub上给我star一下嘛?
更多游戏资讯请关注:电玩帮游戏资讯专区
电玩帮图文攻略 www.vgover.com
