Epic による最新の変更に更新する

Unreal Engine のソース コードのフォークを更新して、最新の修正と機能を取り入れる方法を説明します。

Windows
MacOS
Linux

ソースを利用する最大のメリットの 1 つは、Epic のチームが Unreal Engine に追加した最新の改善点と新機能を常に利用できる点です。Epic は、ソース コードに変更を加え、新しい公式リリースの公開時に「Unreal Engine の GitHub リポジトリ 」のさまざまなブランチを継続的に更新しています。新しい公式リリースが公開された時、あるいは毎月、毎日といった間隔で、こうした変更を定期的に取得することをお勧めします。

このページでは、フォークのブランチを更新する 2 つの方法を紹介します。これらの方法を使うことで、Unreal Engine のメインのリポジトリで加えられた最新の変更を反映できます。

方法 1: upstream リモートを利用する

この方法では、オリジナルの Epic Games の Unreal Engine リポジトリを、フォークのローカル コピーに新しいリモート リポジトリとして追加します。これは、通常、upstream リモートと呼ばれます。upstream リモートの変更をローカルのブランチにプルすると、その変更を GitHub 上の自分のフォーク (通常 origin リモートという) にプッシュできます。

以下で説明する、GitHub のプル リクエストを使用する方法 2 よりも初めのうちは難しいように思えるかもしれませんが、こちらの方法を推奨します。この方法には、次の 2 つメリットがあります。

  • upstream リモートは一度設定すれば、フォークの同じローカル クローンを使い続ける限り、再設定を行う必要がありません。プロジェクトに合わせて、必要に応じた頻度で、すばやく簡単に変更を取得できます。

  • フォークを更新するために GitHub でプル リクエストを使用すると、そのたびにブランチに新しいコミットを作成し、プロジェクトの履歴に新しいプル リクエストを作成することになります。これは通常は問題になりませんが、不要な登録は行わないことをお勧めします。

次に、Git のコマンドライン ツールを使って新しいリモート リポジトリを追加し、変更を取得する方法を説明します。グラフィカルな Git クライアントを使っていても、手順はほぼ同じです。詳細については、ご利用のツールのドキュメントをご覧ください。

GitHub Desktop を使用すると、フォークをクローンしたときに upstream リモートが自動的に作成されます。upstream ブランチの変更をローカルのブランチにマージして、それからその変更を origin リポジトリにプッシュするだけで済みます。

upstream リモートを設定する手順は次のとおりです。

  1. 分のコンピュータにフォークをクローンしていない場合は、クローンします。

  2. コマンド プロンプトを開き、リポジトリが格納されているフォルダに移動します。

  3. 次のコマンドを使用して、ベースとなる Epic Games のリポジトリを新しいリモート リポジトリ「upstream」として追加します。

    > git remote add upstream https://github.com/EpicGames/UnrealEngine

upstream リモートの変更をフォークに取得する手順は次のとおりです。

  1. 更新するブランチに切り替えます。使用するコマンドの例:

    > git checkout master
  1. upstream リモートの変更をローカルのブランチにプルします。

    > git fetch upstream
    > git merge upstream/master
  1. 変更を origin リモートにプッシュします。

    > git push origin master

方法 2: GitHub のプル リクエストを使用する

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

  2. Branch ウィジェットから、更新するブランチを選択します。
    Selecting the master branch

  3. [Compare] リンクをクリックします。
    Compare

  4. 通常、フォーク内のこのブランチに変更を加えていないと、Epic Games のリポジトリにユーザーのリポジトリにあるすべてのコミットがすでにあるということが、GitHub で示されます。
    switching the base リンクをクリックすると、比較方向が反転し、エンジンのリポジトリに作成されたコミットのうち、ユーザーのフォークにないものが表示されます。
    Switching the base

  5. 変更一覧を確認します。表示されている日付が想定通りの場合は、[Create Pull Request] をクリックします。
    Comparing changes between branches

  6. 簡潔な説明の欄に、プル リクエストで更新するブランチを入力します。入力が完了したら [Create pull request] をクリックします。
    Open a new pull request

  7. GitHub が新しいプル リクエストの [Conversation] タブを表示します。変更一覧の下にある [Merge pull request] をクリックします。
    Merge pull request

  8. [Confirm Merge] をクリックします。
    Confirm merge

マージが完了すると、GitHub でフォークのブランチが最新になります。これで、Git のコマンドライン ツールまたは任意のグラフィカルな Git ツールを使用してそのブランチに切り替え、最新の変更をローカルのコンピュータにプルできます。

方法 3: Perforce を使用する

ストリーム ワークフロー

次のフローチャートは、開発時からリリースまでの各種 Perforce ストリームを使用するエンジンのコードおよびコンテンツのフローを示しています。

PerforceStreams.png

統合、マージ、およびブランチ

ゲーム作成サイクル中に、チームがプロジェクトを定期的に更新して、新しい機能やバグ修正を含むエンジンの新バージョンに更新することがあります。Perforce から更新されたビルドを取得するプロセスは、初期同期で使用するプロセスと同じです。ただし、このプロセスを実行する場合は、ユーザー独自の Perforce サーバーでエンジンをどのように維持するか、競合を最小限に抑えながら、新たなビルドをコード ベースに統合、マージする機能にこのプロセスがどのように影響を及ぼすかなど、多くの点について検討しなければなりません。

マージおよび統合

Epic では、次のようなブランチ階層を推奨します。

ブランチ

説明

//depot/Epic

Epic のコードベースの、オリジナル コピー (変更を含まない) が格納されています。

//depot/MergeTest

Epic の変更とユーザー独自のエンジンの変更をマージするためのステージング領域です。

//depot/Dev

エンジンのリリース ビルドをコード ベースとマージして、統合テストにパスすると、これが作業対象の開発ツリーになります。

エンジンの最新リリースへアップグレードする

サポート チームから Perforce へのアクセス権を取得したら、Epic からエンジンのリリース ビルドのコンテンツを取得できます。これは、新しいビルドを取得する場合の推奨方法です。

  1. Epic の Perforce サーバーからエンジンの最新リリースのコピーを同期します。

  2. 自分の Perforce サーバーから //depot/Epic ブランチのコピーを同期します。

  3. ローカルの //depot/Epic ワークスペースからファイルを削除して、エンジンの新リリースからファイルをコピーします。

  4. P4V のオフライン作業の調整 機能を使用して、Epic の更新を表す変更リスト (CL) を作成します。

  5. 調整操作が完了したら、操作を進めて、先ほど作成した CL をチェックインします。

    この時点で、Epic ブランチはエンジンのリリース ビルドのコピーです。これには、統合履歴が含まれており、エンジンの最新の更新をコード ベースにマージおよび統合する際に競合を削減するうえで役立つマージ ツールの変更情報を提供します。

  6. 最新の開発ブランチ (//depot/Dev) をマージ/テスト ブランチ (//depot/MergeTest) にマージします。

  7. エンジンの最新リリースをマージ/テスト ブランチ (//depot/MergeTest) にマージして、変更をテストします。

  8. ゲームの更新済みのバージョンをマージ/テスト ブランチ (//depot/MergeTest) から開発ブランチ (//depot/Dev) にマージします。

以下は、エンジンの新バージョンのリリース時に想定されるブランチ間での変更フローを示す図です。

Perforce_IntegratingMergingBranching.png

更新頻繁が高いほど、マージ時に重大な競合が発生する可能性が低下します。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback