這幾天趕着把事件補了補,基本上是一個能用的狀態了,大家可以下載下來嘗試一下捏
(鏈接在評論區,有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