Unreal Engine 4 への貢献

Unreal Engine のソースに加えた変更を GitHub のプル リクエストの仕組みを使って Epic に送る方法を説明します。

Windows
MacOS
Linux

Unreal Engine のソース コードを修正したり、新機能を作成したりした場合、その変更を Epic Games に送って、Unreal Engine の次のリリースに組み込むように提案することができます。

長年にわたり、Epic はコミュニティからの数千のコントリビューションを歓迎してきました。コントリビューションには、次に挙げるような多くのメリットがあります。

  • 修正や機能をメインのソース コード リポジトリにマージすると、Unreal Engine (UE4) の最新の変更に対処しやすくなります。ローカルへの変更をエンジンの新しいソースにマージし続ける必要がありませんし、カスタムの修正がコンパイルを通らなくなったり、エンジンの最新のコードで予期したとおりに動作しなくなったりするリスクを負う必要がなくなります。

  • 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 のコーディング標準に準拠してください。 [(Programming/Development/CodingStandard) にあるとおり、Epic では、所定の慣習に従ってコードを記述するよう努めています。提出するコードでも、この慣習に従うように最善を尽くしていただくようお願いいたします。慣習に従ったコードになっていないと、修正を取り込むために長い時間がかかったり、慣習に準拠するようにプル リクエストを更新していただくようにお願いをしたりする場合があります。

  • 変更についてよく説明してください。GitHub の Web ページでプル リクエストのフォームに入力するところで考えを言葉にまとめ始めるのではなく、変更の意図について伝える最適な方法について、事前に少し考えてみてください。
    バグを修正する変更であれば、どうやってそのバグを再現できますか?変更によって問題が解決するということを、どうやって伝えられますか?ほかの修正方法ではなく、なぜそのアプローチを選んだのですか?
    新機能を追加するのであれば、その機能は誰の役に立つものですか?どのように動作するものですか?完全に自分で作成したものでしょうか、それとも別の製品や、別のデベロッパーの作業を元にしたものですか?

あなたの行ったことがすべて適切であったとしても、Epic は提案を受け入れることは保証しないという点に注意してください。提案のレビューを担当する Epic のエンジニアは、多くの場合、今後の開発計画、影響を受ける可能性があるエンジンのサブシステムやプラグイン、サードパーティ関連の考慮事項などについての内部情報を持っています。何らかの理由で提案を受け入れることができないとそれらのエンジニアが判断した場合、その理由をプル リクエストへのコメントでお伝えします。

ブランチのセットアップ

自分のフォーク内の新しいブランチに変更を適用するには、次の手順を実行してください。

  1. フォークにある master ブランチを更新して、オリジナルの Epic Games の Unreal Engine リポジトリでの master ブランチで行われた最新の変更を反映します。
    詳細はこちらをご確認ください。最新の変更を Epic から取得して更新

  2. master ブランチを元に、自分のフォークに新しいブランチを作成して、変更を適用します。この手順は、GitHub 上の自分のフォークのページで行うか、ローカルのコンピューターで Git のコマンドライン ツールまたはグラフィカルな Git ツールを使って行うことができます。

  3. ローカルのコンピューターで、必要に応じて最新の変更を自分のフォークからフェッチして、チェックアウトして新しいブランチに切り替えます。

  4. ローカルにある Unreal Engine のソース コードに変更を加えます。

  5. Unreal Engine をコンパイルして、修正または機能が意図したとおりに動作することをテストします。

    この手順をスキップしないでください。とても小さな変更の場合はスキップしたくなるかもしれませんが、master は頻繁に更新されているので、何らかの更新が、あなたが加えようとしている変更と干渉する可能性があります。

  6. ローカルのブランチに変更をコミットしてから、自分の GitHub リポジトリにプッシュします。

プル リクエストの開始

自分のフォーク内の新しいブランチに変更を適用したら、GitHub の Web サイトでプル リクエストを新規作成して、変更をオリジナルの Unreal Engine リポジトリにマージするよう Epic に求めることができます。

  1. Web ブラウザで github.com にアクセスし、自分のリポジトリのホームページに移動します。
    通常は、https://github.com/<username>/UnrealEngine という形式になります。<username> には GitHub のユーザー名が入ります。

  2. 新しいブランチが最近変更されたという通知が表示される場合があります。その場合は、緑の [Compare & pull request] ボタンをクリックします。

    Compare and pull request

    通知が表示されない場合は、[Branch] ドロップダウン リストから変更を含むブランチを選択して、[New Pull Request] をクリックします。

    New pull request

  3. Open a Pull Request ページで [base] ドロップダウン リストをクリックして [master] ブランチを選択します。これで、変更をマージする先のブランチを設定できます。

    Select the master branch

  4. master ブランチを選択すると、ブランチが (1) [Able to merge] であると表示され、(2) ページの最下部にあるコミットの一覧には、自分のブランチに加えた変更のみが表示されます。

    クリックしてフルサイズで表示

  5. ここで、あなたが加えた変更の目的と範囲について、Epic が知る必要のあることすべてを伝えてください。プルリクエストについて簡単に説明してから、テキスト ボックスに詳細な情報を記入してください。

  6. 変更について理解するために必要な情報をすべて記入したら、[Create pull request] をクリックしてください。

新しいプル リクエストにユニークな番号が割り当てられ、そのページに転送されます。ここで、タイトルと説明を編集したり、新しいコメントを追加したりすることができます。自分のカスタム ブランチにコミットを追加すると、プル リクエストが自動的に更新されて、それらの変更を取り込みます。

クリックしてフルサイズで表示

あとでこのページに簡単に戻るには、次のいずれかを実行します。

  • このページの URL をブックマークに登録する

  • Epic Games の Unreal Engine リポジトリ ページの [Pull requests] タブにアクセスする。[Filters] ドロップダウン リストを使って、自分が作成したプル リクエストを簡単に探すことができます。

次のステップ

Epic のエンジニアリング チームがなるべく早くプル リクエストを確認します。しかし、あなたの側の作業が終わったとは限りません。

Epic から質問をしたり、変更を加えるように依頼したりすることがあります。その場合、プル リクエストの [Conversation] タブを使ってコミュニケーションをとります。プル リクエストから目を離さないようにするか、GitHub のサイトのメールによる通知を購読して、Epic からのメッセージを見落とさないようにしてください。

Epic が修正をリポジトリに取り込むと、プルリクエストは [Merged] ではなく [Closed] となります。これは正常なことであり、予期された動作です。あなたの変更を取り込むコミットには、通常、あなたのプル リクエストがタグとして設定され、あなたのコントリビューションの記録となります。

タグ
Select Skin
Light
Dark

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信