“UnrealEngineのソースコントロールツールを用いたブループリントの競合解決方法”
執筆: “NN”
はじめに
Gitなどのバージョン管理システムを使って複数人の開発を行っているとコンフリクト(競合)が発生することがあります。
ここではGitを用いたプロジェクトにおいて、ブループリント上のコンフリクトが生じた場合に、ソースコントロールツールを用いて解決する方法をご紹介します。
この記事の内容
この記事では、特に以下のポイントについて詳しく解説します。
1. 開発内容を別のブランチからマージ(統合)する方法
2. マージでコンフリクトが発生した際の解消方法
プロジェクトのリポジトリを用意しよう
今回必要なものは4種類です。
- Gitクライアント
- Unreal Engine5.2
- Unreal Engineプロジェクト
- プロジェクトのGitリポジトリ
※こちらの詳しい作成方法は当ブログ内の記事「UEエディタ上ソースコントロールツールのつかいかた」で紹介しています。
追加ブランチでコミットしてみよう
featureブランチの追加
「UEエディタ上ソースコントロールツールのつかいかた」で作成したdevelopブランチから、更に派生ブランチを作成して切り替えます。
- ターミナルを開きdevelopブランチへ切り替え
(既にdevelopブランチの場合は不要)
- developブランチからfeature/update-actorブランチを作成して切り替え
(-bオプションを付けるとブランチを作成した上で切り替わる)
- 以下のメッセージが表示されればfeatureブランチ作成と切り替え成功

featureブランチでファイル更新
まず、現在のfeatureブランチで A_TestActor を更新します。
- 「UEエディタ上ソースコントロールツールのつかいかた」で作成済みのファイルである A_TestActor をダブルクリック

- 以下画面が表示されたら上部ブループリントエディタを開くをクリック
(もしそのままブループリントエディタが表示されていたら次へ)

- イベントグラフ上を一度クリックした後、キーボードの「D」+ マウスクリックでdelayノードを追加(違うノードでもOK)

- コンテンツブラウザ上からA_TestActorをクリックした後、ctrl + S で保存

- 赤いチェックマークが表示されれば更新完了

featureブランチでコミット
続いて更新したファイルをfeatureブランチ上でコミットします。
- ターミナルを開き更新したファイルをステージング
- 念のためにステージングされたファイルを確認
- 以下のようなメッセージでステージングされたファイルが表示される

- A_TestActorがステージングされていることが確認出来たら、「update actor」のメッセージを付けてコミット
- 以下メッセージが表示されればコミット成功

コンフリクトを発生させてみよう
developブランチでファイル更新
まず、同じA_TestActorをdevelopブランチ上で更新します。
- 現在のfeatureブランチからdevelopブランチへチェックアウト
- 以下メッセージが表示されればチェックアウト成功

- A_TestActor をダブルクリック

- 以下画面が表示されたら上部ブループリントエディタを開くをクリック
(もしそのままブループリントエディタが表示されていたら次へ)

- 先ほど配置したdelayノードが存在していないことを確認
(ブランチが異なるため)

- イベントグラフ上をクリックした後キーボードの「C」を押してノードコメントを追加

- コンテンツブラウザ上からA_TestActorをクリックした後、ctrl + S で保存

- 赤いチェックマークが表示されれば更新完了

developブランチでコミット
続いて更新したファイルをfeatureブランチ上でもコミットします。
- ターミナルを開き更新したファイルをステージング
- 念のためにステージングされたファイルを確認
- 以下のようなメッセージでステージングされたファイルが表示される

- A_TestActorがステージングされていることが確認出来たら、「update actor」のメッセージを付けてコミット
- 以下メッセージが表示されればコミット成功

featureブランチをdevelopブランチへマージ
ここまでで現在、developブランチとfeatureブランチの両方で同じファイルを更新した状態になっているはずです。
この状況でマージすることにより、コンフリクトを発生させます。
- ターミナルを開きfeature/update-actorブランチをdevelopブランチにマージ
- 以下メッセージとともにコンフリクトが発生

コンフリクトを解決してみよう
コンフリクトの内容を確認
ソースコードであればVSCodeなどからコンフリクトの状態を確認できますが、ブループリントの場合はUnrealEngineのソースコントロールツールを使わないと、詳細を確認できません。
UnrealEngineのエディタからコンフリクトの状態を確認してみましょう。
- uprojectファイルをダブルクリックしてエディタを起動

- A_TestActorに「赤矢印が向かい合ったアイコン」が付いている(=競合状態である)ことを確認

- A_TestActorを右クリックしてリビジョンコントロール > マージを選択

- 開いたマージツールの左メニューを確認する

- オレンジ色になっている部分が更新部分なのでクリック

- 以下の形で表示されるので、グラフ上の同じ部分で更新されている内容(5の画像を参照)を確認する
- 右側{ソース(REMOTE)}:現在のブランチ(develop)
- Delayノードが配置されている
- 中央(ベース):マージした結果となるコミット内容
- 左側{TARGET(LOCAL)}:取り込むブランチ(update-actor)
- コメントが配置されている
- 右側{ソース(REMOTE)}:現在のブランチ(develop)
コンフリクトの解決
2025年6月現在ではGitを使ったマージツールの「〇〇を承認する」から直接マージ操作を行うとエラーが発生します。
そのためグラフ上でのコピーとペーストによる手動マージを行います。
(両方の更新を取り込む場合はいずれにせよ手動でマージすることになります)
- マージツールを開いた時点で、A_TestActor自体のBPエディタも裏側で開いているはずなので、マージツールウインドウの左上タブをドラッグして、レベルタブとA_TestActorのタブに並べる
(既に並んでいた場合はそのままでOK)

↓

↓

- ソース(REMOTE)のグラフ上でマウス右ボタンを押しながらドラッグ(グラフ全体をスライド)してDelayノードを表示させる

- Delayノード上で右クリックして表示される「コピー」をクリック

- ウインドウ上部のA_TestActorタブをクリックしてウインドウを切り替え

↓

- イベントグラフ上のコメントの下部あたりを右クリックしてからCtrl + Vで、コピーしたノードを貼り付け

- 左上のコンパイルボタンをクリックしてエラーが出ないことを確認

↓

- 左上の保存アイコンをクリックしてA_TestActorの修正を保存

- ウインドウ上部のマージツールタブをクリックしてウインドウを移動

- タブ下部の「マージを終了する」ボタンをクリック

マージ作業のコミット
マージ作業が完了したのでコンフリクトが解決されたことを確認してコミットを行います。
- レベルタブをクリックしてコンテンツブラウザを表示します。

- A_TestActorの表示アイコンが、コンフリクトアイコンから更新アイコン(赤いチェックマーク)に変わって競合が解決されていることを確認

- ターミナルを開き、以下コマンドで競合解決の更新内容をステージング
- 念のためにステージングされたファイルを確認
- A_TestActorがステージングファイルとして表示される

- 確認出来たら「Resolve merge conflicts」のメッセージを付けてコミット
- 以下メッセージが表示されればコミット成功

マージしたブループリントを確認しよう
コンフリクトを解決したファイルの確認
エディタを起動してコンテンツブラウザからA_TestActorを開いた場合に、以下のように表示されていれば、競合を解決して正しくマージできています。

別々のブランチで追加したはずのDelayノードとコメントが、一つのブループリント上に無事反映されました。
まとめ
今回はUnreal Engineのマージツールを使ってコンフリクトを解決する方法をご紹介しました。
チーム開発で複数人がGitを介して作業を行うと、どうしてもコンフリクトが発生してしまうことがありますがソースコントロールツールを使えば、ブループリントでも競合個所を確認しながら安全に解決することができます。
ただしレベルブループリントには使えないことや、Git使用では一部機能でエラーが発生することなど、まだまだ万能ではありません。
(Gitでのマージツール機能は、現在2025年6月時点ではβ版)
それでもブループリントでコンフリクトが発生した場合には、解決方法の一つとして便利なツールなので上手く役立ててみてください。