群星编年史解析器v0.03更新!附原理解析

这几天赶着把事件补了补,基本上是一个能用的状态了,大家可以下载下来尝试一下捏

(链接在评论区,有github等两个链接方便大家取用)

github主页

1.v0.03更新内容

  1. 事件的词条从原先我用来测试的42条扩充至了87条,包括了3.14以前的全部起源,以及游戏中的大部分事件(宣战、胜利、谍报、科研等等),基本上已经可以用了

  2. 修正与增强:事件占位符处理和实体生成逻辑小幅改进,提高生成连贯性。

  3. 增加了错误指令格式的处理

  4. 新增:命令行支持年度标记过滤选项(可选择包含或过滤 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