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

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

Choose your operating system:

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

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

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル