欧陆风云4 存档管理器开发小记
近日在玩欧陆风云 4,为了完成成就,所以选择了铁人模式,由于是新手+铁人模式不能自由存档(新存档会覆盖旧存档),容错率较低,故考虑开发一个工具来管理存档,将新的存档备份起来,以便需要时读取。
第一版是使用 Node.js 实现的,通过 setInterval 定时备份存档文件。这种做法有些缺陷:
- 没有 GUI,每次需要手动在 cmd 下执行
- 不能监听存档文件的变动,手动保存的存档不一定会被备份
- 会生成很多重复的文件
- 不好查看备份操作的记录
于是考虑开发一个 GUI 应用,希望它具有以下能力
- 跨平台(欧陆风云 4 支持 Windows/Linux/Mac)
- 能够选择存档目录
- 能够监听文件变动(做保存操作时能够触发,将新的存档备份)
- 能够展示备份操作记录
- 能力强大可扩展(为后续开发提供空间)
综合考虑后,决定使用 Python + PyQt 开发。
UI 绘制:
使用 Qt Designer 生成 .ui 文件,通过 pyside2-uic 将 .ui 文件编译成 .py 文件,在 MainWindow 中引入:
from ui.MainWindow import Ui_MainWindow
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
Windows 系统下 QDialog
窗口右上角有问号按钮:
app.setAttribute(Qt.AA_DisableWindowContextHelpButton)
应用打包:
使用 pyinstaller 打包,在 Windows 和 Mac 环境下,生成文件大小约为 30-50MB,使用 UPX+生成单文件的情况下可以大幅缩小文件尺寸。
后续计划:
- 构建
- 完善图标、bundle identifier 等信息
- 使用 GitHub Actions 自动调用 pyinstaller 完成构建
- 功能
- 检查文件 hash,避免生成重复备份
- 展示备份操作记录(时间列+文件名列)
- 从存档中解析出国家、时间信息,在管理器界面展示