この記事はUnreal Engine 4 (UE4) Advent Calendar 2017の4日目の記事です。
今年は4年目にして遂に、GitHub上にあるUE4のエンジンソースコードに対してPull Requestする方法を解説します。Pull Requestを行うと、誰でもエンジンのバグを修正したり、エンジンに追加機能を足したりといった事が可能となります!
しかしUE4のエンジンに対してPull Requestするのは通常の方法とは少しだけ特殊なものとなっています。一応GitやGitHubが始めてのような方で、それなりにUE4のC++コードが触れる人を対象にしています。
なので、UE4とはちょっと違う話が展開されるかと思いますが、最終的にUE4を使う人が少しでもエンジンに対してPull Requestするキッカケになればと思います。
それでは早速見ていきましょう!
UE4のソースコードにアクセスできるようにする
UE4のソースコードはGitHub上に公開されていますが、いわゆるPrivateリポジトリーと呼ばれるものになっており、そのままではすぐに閲覧することすらできません。
UE4のリポジトリーにアクセスするには、UE4のアカウントとGitHubのアカウント両方が必要になります。それぞれのアカウントの取得方法はどちらも検索すればすぐに出てくるものなので、ここでは解説しません。
次にUE4のアカウントGitHubアカウントの紐づけです。これもUE4の公式サイトに詳しくアクセスする方法が載っています。
これらのアカウントに登録し、紐づけが完了した場合にのみ以下のUE4リポジトリーにアクセスが可能となります。
https://github.com/EpicGames/UnrealEngine
これでUE4のリポジトリーにアクセス可能になっていれば、無事UE4のソースコードが閲覧できて、Pull Requestが可能となったはずです!
Gitのインストールと導入
GitHubはGitと呼ばれるVCS(Version Control System)のソフトウェアを使って操作を行うWebサービスです。当然Gitがインストールされていなければほとんど何も出来ません。
Gitそのものについては詳しく解説しません。まずはGitをインストールしましょう。ここではWindows環境を使っている前提で説明します。
Windowsで使えるGitクライアントとしてはGit for Windowsなどが有名です。
私も普段はこれを使いながら、GUIの操作はTortoiseGitを使っています。
TortoiseGit – Windows Shell Interface to Git
ただし、TortoiseGitを使ってPull Requestを行うのは不可能ではありませんが、非常にややこしいものとなってしまうので、今回はGit Bashと呼ばれるコマンドラインツール上からコマンドを入力してPull Requestを行います。
TortoiseGitなどのインストール方法は以下の記事が参考になります。
UE4リポジトリーからソースコードをForkする
Pull Requestを行うためにはUE4のリポジトリーをForkするという操作が必要です。Forkとはリポジトリーを複製して、自分のリポジトリーとして再度構築し直すことです。
本家UE4リポジトリーには第三者が直接リポジトリーにPushするといった権限を持たないので、一旦自分のリポジトリーとして作り直した上で、そこで編集を行ったものを本家に対して取り込むお願いをする必要があります。これがPull Requestと呼ばれるものになります。
Pull Requestを行うと本家UE4リポジトリー上で開発者によるレビューが行われた上で、OKが出ると開発者が自分で取り込む(Merge)作業を行うことになります。
Forkを行うにはGitHub上のUE4リポジトリーの右上にあるForkボタンを選択します。
Forkを行うと自分のアカウント上にUE4リポジトリーが存在することになります。実際にForkされたUE4リポジトリーを確認すると以下のように自分のアカウントに『UnrealEngine』というリポジトリーが出来ているはずです。
これでForkが完了しました!
PC上にリポジトリーをCloneする
次はGitHub上にある自分のUE4リポジトリーをローカルPC上にCloneします。Cloneというのは名前の通り複製するということです。Gitの場合、リポジトリーはインターネット上だけでなく、ローカルPC上にも構築することが可能で、ローカルPCだけでGitを使って開発すること可能となっています。
ただし、Pull Requestを行うには必ずローカルPC上にCloneしてからソースコードを編集する必要があるので、まずはClone操作を行います。
画像のようにボタンを選択し、GitHub上でCloneするためのURLをコピーします。
次にGit Bashを使ってそのURLからリポジトリーをCloneします。Git Bashを起動し、エンジンをCloneしたい場所に"cd"コマンドで移動します。そして以下のように"git clone"コマンドを入力後にURLを貼り付けします。
この状態でEnterキーを押すとCloneが開始されます。
しばらく時間がかかるので、コーヒーでも飲みながらのんびり待ちましょう。
エンジンのビルドをする
UE4のエンジンを動作させるためにはエンジン自体のビルドが必要です。この辺りについてはネットの様々な記事で解説されているので今さらここで解説する必要もないと思うのでサラっと流しておきます。
[UE4] エンジンのソースコード取得とビルド手順のまとめ UE4.6改訂版 | historia Inc - 株式会社ヒストリア
エンジンビルドはとても時間がかかります。ご飯でも食べながらゆっくりと待ちます。
エンジンがビルドできたら、いよいよソースコードを弄ってみましょう!
ソースコードを改造・修正・追加する
実際にエンジンが読めるようになったら、ソースコードをVisual Studioで開き、修正してみます。
ここでは架空のバグを修正してみたことにします。修正が完了したらエンジンをビルドして問題がないことを確認します。
ちなみにコメントは必ず英語で書きましょう。日本語で書いてもEpic Gamesは国際的な企業なので、レビューで弾かれる可能性が高いです。コード自体に問題がなければEpic Gamesがコードをレビューし、Pull Requestが通る可能性が上がります。
Pull Request用のブランチを作成する
ソースコードを修正後、Pull Request用のブランチを作成しておく必要があります。ブランチというのは作業履歴の歴史を分裂させて、別の作業として一連の履歴を作ることです。この履歴そのものをPull Requestすることになります。
"checkout"コマンドを使ってブランチを作成します。ブランチを作るには"-b"オプションを必ずつける必要があります。あとはブランチ名を自由につけます。現在選択しているブランチ名はGit Bash上に表示されます。
今回はわかりやすく"PullRequestBranch"とつけましたが、このブランチ名もレビューを受ける際の基準となる可能性もあるので、極力修正内容を現すような名前にした方がいいと思います。
GitでCommit後にPushする
ブランチ追加後はCommit作業を行い、その後GitHub上の自分のUE4リポジトリーへとPushします。
まずはCommitを行ってみましょう。
"add"コマンドでファイルを追加後に"commit"コマンドでコミットが行われます。これでローカルPCのリポジトリー上へと作業した履歴が残りました。
gitの"log"コマンドで実際にコミットされた情報を確認することができます。
そして最後にPushと呼ばれる、GitHub上の自分のUE4リポジトリーへと反映させる作業があります。
gitの"push"コマンドを使います。pushの後に"origin"オプションをつけて、GitHub上のリポジトリーに対してpushするように指定します。あとはブランチ名を指定すればいいだけ。
これだけ特にエラーがでていなければGitHub上にPull Request情報が追加されています!
GitHub上からPull Requestを申請する
GitHubの自分のアカウント上のUE4リポジトリーへとアクセスします。
Pull Request用のボタンが追加されているのがわかります。あとはこれを選択すると…
新しいページが開くので詳細情報のメッセージを入力します。この情報はEpic Gamesのレビューを行う人が見るものとなるので、しっかりと簡潔に詳細がわかりやすいものにしましょう。
あとは"Create pull request"のボタンを押すことで、遂にPull Requestが完了です!!おつかれさまでした。※これ以上先は実際にEpic Gamesの本家UE4リポジトリーに反映されてしまうので、ここから先は行っていません。
実際にPull Requestが完了しているかは、本家UE4リポジトリー内の"Pull Request"を確認します。
開いてみると実際に様々なPull Requestがあることがわかります。自分がPull Requestしたものがあるか確認してみましょう!
これで無事Pull Requestが完了です!!
あとはレビューを待つ
あとは実際にEpic Gamesの開発者がレビューを行ってくれるので、レビューに反応が来るまで待ちます。以下は実際に私がPull Requestしたものです。
この時は既に内部で修正済みの不具合だったので、実際にエンジンに取り込まれたわけではありませんが、Epic Gamesの方は非常に迅速に対応してくれました。
このように実際にUE4のソースコードに貢献すると、なんとUE4のエディター内部のクレジットに自分の名前が載ります!これは凄い!
私もUE4のクレジット内部に自分の名前があり、これは本当に光栄なことです。世界でも最も有名なゲームエンジンの中に名前が載せてもらえてるのですから。
みなさんもぜひUE4のソースコードを改造・修正・機能追加などをして、Pull Requestしてみてもらい、UE4の中に名前を載せてもらいましょう!
明日は荻野雄季さんによる、『Amazon GameLiftをUE4で使って記事を書こうかな』です。GameLift気になってるのでよろしくお願いします!