前情提要
如果對我的 Side Project 「底火的芬芳」不清楚的讀者可能需要先閱讀底火的芬芳 - 專案起源才能理解這場旅程是怎麼開始的。而最近 (2022-12-19) 在逛 Github 的時候晃到一個 repo,它是少女前線這款遊戲的數值模擬器,往程式語言構成一看是用 Typescript 寫的立刻勾起了我的興趣。
neko-gg/gfl-combat-simulator
2022-12-19 在 Github 上閒逛的時候,看到一個 repo。
喔啦啦,這不是 Typescript 嗎? 喔啦啦,這不是 React 嗎? 是我的主場呢 = =+
於是就 clone
下來研究研究。
後來(約 2022-12-20)照著 README.md
的指示:
yarn update-resources
yarn update-assets
找到了 ResourcesUpdater 和 AssetsUpdater 這兩個程式,發現它把遊戲素材放在另外一個 repo。以及會從遊戲官方的 cdn 下載名為 ResData.ab
的檔案,因為不知道是什麼檔案類型,就用 Hex 瀏覽器打開來看:
啊啦啦,原來是 Unity ResData Bundle。
另外,從 ResourcesUpdater
看到它呼叫了來自 ChibiUpdater.ts 的方法,稍微研究一下內容發現它使用 Puppeteer 打開一個網站並做了某些事,不過因為程式碼已經有點過時了,網站已經被移到其他地方,DOM 的操作也和原本腳本內的方式有點落差。研究了它使用 Puppeteer 的方式,看得出來目的是取得一張 Chibi 站立的圖片。
- 原始的 Chibi (程式內對人偶的稱呼)檔案是將人偶拆件,並透過組態檔組裝的。
- naganeko 的網站能夠上傳 Spine 檔案,並播放動畫。
- naganeko 的網站也能下載組裝後的圖檔。
試著逆向工程 naganeko 的網站,發現它應該是使用了 Spine 的 Runtime。