実践、ゲームの開発にコミットしてみるには

これは、Steam & PC Gaming Advent Calendar 2015の7日目の記事です。
大げさなタイトル書いてますが、要は洋ゲーの日本語化を行ってそれを公式に取込んでもらおうって話です。
尚、今回ある程度分かってる人に書いてますんで、技術的な用語の解説等はしませんのであらかじめご了承を。

承前

今回はBF2:PRを例にとって行います。
BF2:PRはlocalizationファイルをGitHubというところで管理していて、そこにpull requestを投げることにより公式に取込んでもらうことができるようになっています。

githubにて

こんな記事見てる人は全員持ってると思いますが、一応githubのアカウント作っておいてください。
realitymod/pr-localizationからレポジトリをforkしてください。
できたforkを自分のローカルにcloneを行います。今回は私のレポジトリを例にとります。

$ git clone git@github.com:ltakeshi/pr-localization.git

ローカル環境にて

まず、作業用ディレクトリに移動しておきます。
で、最初に行うのは

$ git remote add upstream git@github.com:realitymod/pr-localization.git

まずこのレポジトリの上流を指定しておきます。これが今後重要になってきます。上流なのでupstreamという名前で登録しておきます。
その後に作業用ブランチを作成します。

$ git checkout -b jp_trans

この場合はjp_transというブランチを作成し移動が行われます。
これを行った後にjapanese/*.utxtを編集していくことになります。
尚、注意事項等はREADME.mdに書いてありますので、よく見て編集してください。

日本語化tips

BF2はフォントがまじめに実装されていないため、一部使えない文字が存在しています。(ex: ギ)
そのため、イギリス軍という表記ができないため英軍という表記になっていたりします。
使える文字はBattlefield 2 - Battlefield MOD日本語化 Wiki*にて公開されていますので、参考にしてください。
ダメ文字を確認した後に、翻訳を行い、実際にその文字等が使えるかを確認するためにPRに反映させてみるというのもよく行います。
例えば、Project Reality\Project Reality BF2\mods\pr\localization\japanese/pr.utxtの
``撃たないでくれ!"となっているところを翻訳した文章に書き換えて反映させます。
ローカルのcoopを立ち上げて、確認してみてください。

ファイル編集後

ファイルを編集した後には

$ git commit -a

で、編集の結果をgitに登録します。
これは編集を何度か行うことになると思うんですが、そのたびに行っていくことになります。
commitのメッセージは書いておくと、後々自分が助かります。ProjectRealityの翻訳用ファイルはなぜかバイナリ扱いになってるので、gitでは編集履歴が追えません。
なので、commitメッセージでどこの翻訳をしたか程度でも書いておくと良いんじゃないかと思ったり。
ちなみに直近の私が書いたcommitメッセージはこんな感じです。

pull requestの用意

ファイルを編集し終わったら、pull requestの用意です。
まずは、jp_transブランチからmasterブランチへ移動します

$ git checkout master

そうした後に上流の更新をmasterブランチに取込みます。

$ git pull upstream master

そうして、もう一度jp_transブランチに移動し、upstreamの更新をjp_transにも適応します。

$ git checkout jp_trans
$ git rebase master jp_trans
$ git push -f origin jp_trans:jp_trans

この状態でもpull requestを投げられる状態ではあるのですが、これをやると先方さんに取込んでもらうときにトラブルになる可能性があるので、commitを一つにまとめます。

$ git rebase -i

これを行うとテキストエディタでどうしますかという問いが発生すると思います。
以下のような感じです(適当に再現してるので、多少違うと思います)

pick 674b8d6 New Japanese Translate add
pick cf3ab69 LOCALIZATION: Merged the PR:Falklands localization files.
pick 2ce45ed LOCALIZATION: Updated localization fb #4338

#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell

これの2、3行目のpickをsquashに書き換えてセーブするとcommitが一つになります。
これを行うとテキストエディタでどうしますかという問いが発生すると思います。
以下のような感じです(適当に再現してるので、多少違うと思います)

pick 674b8d6 New Japanese Translate add
squash cf3ab69 LOCALIZATION: Merged the PR:Falklands localization files.
squash 2ce45ed LOCALIZATION: Updated localization fb #4338

#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell

こうして 上流の最新状態 + 自分の編集した1commit な状態になったら、pull requestを行います。

pull requestのちょっと前に

普通はこのタイミングでpull requestするのですが、PRの翻訳ファイルはもう一手間かけることになります。
githubのWebサイトでjp_transのブランチを表示している状態で、``Download ZIP"でファイル一式をダウンロードしてきます。
zipファイルを伸張した後に、check-localization.exeを起動して、文字コードなどが正常な状態になっているかを確認してください。
これは文字コードのエラーが多かったために、確認のために公式で作成されたツールです。

github再び

とはいえ、まずrebaseしたのちに、それをpushしておきます。

$ git push origin jp_trans:jp_trans

その後にpull requestを行って取込んでもらってください。

まとめ

以上がPRを翻訳した後に、pull requestするまでに行ってる作業です。
案外簡単に取込んでもらえるので一度やってみてください。何か分からないことがあれば、@ltakeshiまで。

参考
GitHubへpull requestする際のベストプラクティス - hnwの日記