Unreal Engine (UE) のソース コードの修正または新機能の作成をした場合、その変更を Epic Games に送って、Unreal Engine の次回リリースに取り入れるように提案することができます。
長年にわたり、Epic はコミュニティからの数多くの提案を取り入れています。提案を取り入れると次のような多くのメリットがあります。
-
修正や機能をメインのソース コード リポジトリにマージすると、Unreal Engine 5 (UE5) の最新の変更に対処しやすくなります。ローカルへの変更をエンジンの新しいソースにマージし続ける必要がありませんし、カスタムの修正がコンパイルを通らなくなったり、エンジンの最新のコードで予期したとおりに動作しなくなったりするリスクを負う必要がなくなります。
-
Unreal Engine と編集ツールを改善すると、広い Unreal コミュニティの強化につながり、あなたの知識と技術はより価値の高いものとなります。
-
あなたの手による変更を Epic が受け入れた場合、あなたの名前と GitHub のハンドルをコントリビュータとしてリリース ノートに掲載します。
Epic では、提案の管理、追跡、評価のために、GitHub のプル リクエストの仕組みを利用しています。このページでは、コントリビュートを始めるために知っておく必要があることすべてを紹介します。
提案の計画作成
GitHub でプル リクエストを作成するのは簡単ですが、Epic にとって評価しやすく、リポジトリに組み込みやすいプル リクエストを作成するためには、事前に少し計画を立てる必要があります。
提案が受け入れられる可能性を高め、Epic が追加作業や変更を依頼することにならないように、次に挙げる点について心がけてください。
-
内容を集中させる。 1 つのプル リクエストで、1 つの具体的なバグを修正するか、1 つの自己完結した機能を追加するのが理想的です。プル リクエストに複数のファイルに対する変更が含まれ、いくつものコミットが含まれていてもかまいませんが、それらの変更のすべてが 1 つの目的を達成するためのものであるようにしてください。
同時に複数の内容を提案したい場合は、遠慮なく複数のプル リクエストを作成してください。Epic にとっては、大きな 1 つの提案を要素別に分割するよりも、複数のリクエストを検証して取り入れる方が簡単です。 -
master を起点する。 master 以外のブランチに対する変更をマージすることもできるのですが、最もマージしやすいのは、オリジナルの Unreal Engine リポジトリのmaster ブランチからフォークした、新しいクリーンなブランチに対する変更です。
-
変更はユニバーサルなものにする。 Unreal Engine と編集ツールは、多様な業種のユース ケースにおいて、無制限に思えるほど幅広いリアルタイム コンテンツ プロジェクトで使用されています。なるべく汎用的な新機能になるような設計を心がけることで、可能な限り多くの利用者に役立ちます。特定のゲームプレイやコンテンツを想定することは避けてください。
-
Unreal Engine のコーディング標準に準拠する。 Unreal Engine のコーディング標準 にあるとおり、Epic では、所定の慣習に従ってコードを記述するよう努めています。提出するコードにおいても、この慣習に従うように最善を尽くしていただくようお願いいたします。慣習に従ったコードになっていないと、修正を取り込むために長い時間がかかったり、慣習に準拠するようにプル リクエストを更新していただくようにお願いをしたりする場合があります。
-
変更について十分な説明を考える。 GitHub の Web ページでプル リクエストのフォームに入力するところで考えを言葉にまとめ始めるのではなく、変更の意図について伝える最適な方法について、事前に少し考えてみてください。
バグを修正する変更であれば、どうやってそのバグを再現できますか?変更によって問題が解決するということを、どうやって伝えられますか?ほかの修正方法ではなく、なぜそのアプローチを選んだのですか?
新機能を追加するのであれば、その機能は誰の役に立つものですか?どのように動作するものですか?完全に自分で作成したものでしょうか、それとも別の製品や、別のデベロッパーの作業を元にしたものですか?
提案内容がすべて適切であったとしても、Epic はその提案を受け入れることは保証しないという点に注意してください。提案のレビューを担当する Epic のエンジニアは通常、今後の開発計画、影響を受ける可能性があるエンジンのサブシステムやプラグイン、サードパーティ関連の考慮事項などの内部情報を持っています。何らかの理由で提案を受け入れることができないとそれらのエンジニアが判断した場合、その理由をプル リクエストへのコメントでお伝えします。
ブランチのセットアップ
自分のフォーク内の新しいブランチに変更を適用するには、次の手順を実行してください。
-
フォークにある master ブランチを更新して、オリジナルの Epic Games の Unreal Engine リポジトリでの master ブランチで行われた最新の変更を反映します。
詳細は「Epic からの最新の変更へ更新する」を参照してください。 -
master ブランチを元に、自分のフォークに新しいブランチを作成して、変更を適用します。この手順は、GitHub 上の自分のフォークのページで行うか、ローカルのコンピューターで Git のコマンドライン ツールまたはグラフィカルな Git ツールを使って行うことができます。
-
ローカルのコンピューターで、必要に応じて最新の変更を自分のフォークからフェッチして、チェックアウトして新しいブランチに切り替えます。
-
ローカルにある Unreal Engine のソース コードに変更を加えます。
- Unreal Engine をコンパイルして、修正または機能が意図したとおりに動作することをテストします。
この手順をスキップしないでください。とても小さな変更の場合はスキップしたくなるかもしれませんが、master は頻繁に更新されているので、何らかの更新が、あなたが加えようとしている変更と干渉する可能性があります。
- ローカルのブランチに変更をコミットしてから、自分の GitHub リポジトリにプッシュします。
プル リクエストの開始
自分のフォーク内の新しいブランチに変更を適用したら、GitHub の Web サイトでプル リクエストを新規作成して、変更をオリジナルの Unreal Engine リポジトリにマージするよう Epic に求めることができます。
-
Web ブラウザで github.com にアクセスし、自分のリポジトリのホームページに移動します。
通常は、https://github.com/<username>/UnrealEngine
という形式になります。<username>
には GitHub のユーザー名が入ります。 -
新しいブランチが最近変更されたという通知が表示される場合があります。その場合は、緑の [Compare & pull request] ボタンをクリックします。
通知が表示されない場合は、[Branch] ドロップダウン リストから変更を含むブランチを選択して、[New Pull Request] をクリックします。
-
Open a Pull Request ページで base ドロップダウン リストをクリックして master ブランチを選択します。これで、変更をマージする先のブランチを設定できます。
- master ブランチを選択すると、ブランチが (1) [Able to merge] であると表示され、(2) ページの最下部にあるコミットの一覧には、自分のブランチに加えた変更のみが表示されます。
クリックしてフルサイズで表示
-
ここで、あなたが加えた変更の目的と範囲について、Epic が知る必要のあることすべてを伝えてください。プルリクエストについて簡単に説明してから、テキスト ボックスに詳細な情報を記入してください。
- 変更について理解するために必要な情報をすべて記入したら、[Create pull request] をクリックしてください。
新しいプル リクエストにユニークな番号が割り当てられ、そのページに転送されます。ここで、タイトルと説明を編集したり、新しいコメントを追加したりすることができます。自分のカスタム ブランチにコミットを追加すると、プル リクエストが自動的に更新されて、それらの変更を取り込みます。
クリックしてフルサイズで表示
あとでこのページに簡単に戻るには、次のいずれかを実行します。
-
このページの URL をブックマークに登録する
-
Epic Games の Unreal Engine リポジトリ ページの [Pull requests] タブにアクセスする。[Filters] ドロップダウン リストを使って、自分が作成したプル リクエストを簡単に探すことができます。
次のステップ
Epic のエンジニアリング チームがなるべく早くプル リクエストを確認します。この時点においてもまだ作業は完了ではありません。
Epic から質問をしたり、変更を加えるように依頼したりすることがあります。その場合、プル リクエストの [Conversation] タブを使ってコミュニケーションをとります。プル リクエストから目を離さないようにするか、GitHub のサイトのメールによる通知を購読して、Epic からのメッセージを見落とさないようにしてください。
Epic が修正をリポジトリに取り込むと、プル リクエストは [Merged] ではなく [Closed] となります。これは正常なことであり、予期された動作です。変更の取り込みがコミットされると通常はプル リクエストがタグとして設定され、提案の記録となります。