Getting Over Itの字幕をすべて(全言語、全場面のものを)記載したサイトを作った。完全にネタバレありなので、未クリアの人は踏まないほうが良い。
↑これ。
機能として、各Termを言語別で表示/非表示を切り替えられる。また、Termに対して雑なジャンル分けしたので表示するものを絞ることができる。
動機としては3種類あって、以下のような感じ。
- 日本語の字幕と英語で言っていることがズレているように感じることがあり、でも聞き取れるわけもないから文字起こしを頂いた上で意訳が適切なのかどうかを確かめたい
- 考察のための足掛かりにしたい
- これらの文言をいつでも引用することができる状態にしたい
日本語と英語のズレについては、おそらくプレイしたことのある人で、かつ字幕を見たことがある人なら少し感じるところがあると思う。そもそも日本語としての完成度もちょっと低いし、気になる部分は多かった。例えば、
Maybe this is what this digital culture is. A monstrous mountain of trash, the ash-heap of creativity's fountain. A landfill with everything we ever thought of in it Grand, infinite, and unsorted.
が
多分これは、このデジタル文化があるものです。 ゴミの巨大な山、 創造性の噴水の灰ヒープ。 私たちが今までそれで考えるすべてのものとの埋立 グランド無限、およびソートされていません。
になるのは、なんというかもうちょっとうまい選択肢はあったんじゃないかと思う。みたいな、そういうもの。揚げ足取り。
考察については単純で、ただただ列挙されているため、追いやすい。Getting Over Itの初見プレイではシンプルにへたくそすぎて落ちてしまうから字幕を見ている余裕がなく、今の自分のレベルだとタイムアタックに必死でやはり字幕を見ている余裕がない。そのためだけにゆっくりやるのも良いのだが、書き起こしのようにあとからいつでも再確認できるものを作ったほうが効率が良いだろう、という感じ。
文言をいつでも引用することができる状態にしたい、というのも単純で、Bennett Foddyが言っていることが僕にかなり刺さっており、これをいつでも引っ張ってこれる状態は割と精神衛生に役立ちそうだと思っている。また、このサイトの各文言の見出し(例えば CONDOLENCE_00
)のDOMにはidを降っており、見出しの下にはそのidへのリンクを用意した。これを右クリック→リンクのアドレスをコピーすることで、誰にでも共有できるようになった。誰かが精進してる場面で投げつけたい。
字幕の一括取得方法について
これらの文字列はもちろん自分の手で打ち込んだわけではなく、ゲーム自体から引っ張ってきたものになる。以下にその方法を簡単に記載する。
Getting Over ItはUnityのゲームかつmodが作られまくっているゲームであるというところを見ると、リバースエンジニアリング的な難所はあまりなさそうに感じた。dnSpyで覗くと、実際に読みやすいILが出現した。これはいけるぞ、とリソースをAssetStudioに突っ込んでLanguageSourceのPathIDを取得、次にリソースをUABEに突っ込んで先程取得したPathIDに当たるリソースを抽出、最後にjsonの形に整形して完成。
本当はjson出力機能も備えているAssetStudio単体で出力したかったのだけれど、LanguageSourceをはじめとしたTypeがMonoBehaviorなリソースが何故か抽出できなかったので、諦めて前述の手順を踏んだ。
このjsonはここ↓に存在する。 なにかよいアイデアがあれば是非なにかを実装してみてください。
https://github.com/naari3/goi-subtitles/blob/main/data.json
サイト作成について スタックなど
せっかくjsonを取得したのだし、ある程度の視認性は確保したいよねということで今回のサイトを作成した。どんな感じにしようかな〜って迷っていたが、Vite + React + TypeScriptで簡単に拵えた。
TypeScriptは本当の大前提として。
Reactは自分が使える範囲で使った。ステート管理の行儀はあまり知らないが、ContextとかReduxとかを使わない範囲であれば、まあなんとかなるって感じ。書き味が楽しくて良い。今回スタイルはふつうに1から手書きしたが、tailwindとかの機運だったのだろうか。まあそれは追々で。
今回初めてViteを使ったが、このレベルのシンプルなプロジェクトであっても(だからこそなのかな?)認識できるほどの、超高速と言えるスタンバイ/ビルドに正直感動した。ES modulesを使っているので巨大な1ファイルにバンドルする作業が走らず、超高速であるという認識。scssとかtsxとか静的ファイルとか色々が特に設定無しで動いてくれるのもストレスフリーで良かった。本番向けのバンドルも早かった印象がある。次からこの具合の小ささを持つプロジェクトはviteでいいや、って感じ。
自分の欲しかった最低限を用意した結果、結構満足できる出来になってくれて結構嬉しい。
それではさようなら
この素晴らしいゲームを制作したBennett Foddyに全身全霊の感謝を込めて。