4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

一人UE4 & C++Advent Calendar 2019

Day 6

【UE4】無料で出来る!コードとアセットを、異なるアクセス権を持つリポジトリで管理し、連携させる方法

Last updated at Posted at 2019-12-05

最初に

この記事はUE4にてアセット群を管理するためにGitLabを試す記事となります。間違いや更に良い方法があった場合にはそっとTwitter( @ろっさむ )やコメント、修正リクエストなどでお知らせ頂けるととても有難いです。

作業環境

記事内で使用する作業環境は以下の通りとなります。

  • Unreal Engine:4.23.1

GitLabとは?

以下の記事が参考になります。

サブモジュールとは?

Aというリポジトリのサブディレクトリとして、Bという別のリポジトリを登録し、Bのコミットハッシュ値を使用してBの特定のコミットを参照する、といった仕組みです。

以下の記事が詳しく書かれています。

Git submodule の基礎

アセット管理でGitLabを使うメリット

まず初めに、「チーム開発するにおいてUE4の有料アセットをどこで管理するか?」という問題点があると思います。有料アセットをライセンス的な問題でパブリックリポジトリに置くのはちょっと…となるので、そういった場合には、5人以下の少人数チームであればPerforce、BitbucketやGitHubのプライベートリポジトリが選択肢にあがると思います。

今回はそれ以上の人数でアセットを共有する必要がある場合の、アセットの管理方法となります。先ほどあげたホスティングサービスなどは、5人以上でプライベートリポジトリのコラボレーターを登録しようとすると人数に応じて料金がかかってきます。インディーズゲーム開発ではできるだけコストを削減したいところ…。

そこで目についたのが、GtLabでした。GitLabだとプライベートリポジトリ作成無料、コラボレーターにも制限がない、Wiki自体も使いやすい、といったメリットがあります。現在、私たちの開発では、アセットの管理をGitLabのプライベートリポジトリで行い、GitHubのパブリックリポジトリでコード管理を行っています。

今回は、GitLabのアセット用プライベートリポジトリをSubmodule化してUE4エディタから操作できるようにします。

実際の手順

GitHubでプロジェクト用のパブリックリポジトリを作成する方法

こちらの方の記事を参考に作成してみてください。

UE4のプロジェクトを複数人で開発するためGitHubで管理する

作成した後にはプロジェクト下にあるContentフォルダの中身をコピーして別の場所に保存してから、一旦削除しておいてください。

GitLabでプライベートリポジトリを作成する方法

以下の記事を参考に「Content」か、それがわかる任意の名前をつけたプライベートリポジトリを作成してください。

【UE4】アセット管理のためにGitLabを使用する

作成した前提で次の項目へ進みます。

GitLabでのプライベートリポジトリにアセットを移動させる

先ほど別で保存していたContent下のアセット群を、GitLabで作成したプライベートリポジトリに直接移動させます。移動させたら、アセット群をステージングしてコミット、プッシュしてください。

image.png

GitLabのプライベートリポジトリをサブモジュールにする

以降はターミナルでコマンドを実行することを想定しています。が、そこまで手順はありません。

まずは以下のコマンドで、カレントディレクトリをプロジェクト自体のフォルダ下へ変更します。

cd ProjectFolderName/ProjectName/

次に、GitLabでのプライベートリポジトリへのClone用リンクを取得します。今回はHTTPS側を選択しています。

image.png

以下のコマンドを実行します。Contentとなっているところがフォルダ名となるので、お間違えの無いよう。

git submodule add https://gitlab.com/ProjectURL/content.git Content

しばらく待ちます......

もし間違えて、上記コマンドがやり直しとなった場合には、.gitmodulesと、.git/index, .git/modules/ProjectName/(プライベートリポジトリ名)の削除、.git/configをテキストエディタで開いて以下の文を削除してください。

image.png

サブモジュール化の処理が終わったら、プロジェクトのパブリックリポジトリ側で.gitmodulesProjectName/プライベートリポジトリ名を追加変更として登録し、もしContent下のアセットが削除として差分が出ていたらそちらも登録してください。git add -Aが便利です。

image.png

これでサブモジュール化が完了しました。追加変更として登録したProjectName/プライベートリポジトリ名にはSubproject commit xxxxxxxと書いてあると思いますが、これはサブモジュール化したリポジトリのどのコミットまでを参照するか、という意味です。こちらはアセット用のプライベートリポジトリ側で変更のコミットがあった場合、プロジェクトのパブリックリポジトリ側でも、このコミットハッシュ値が更新されるため、同様にコミットする必要があります。

image.png

image.png

最後に

そこまで難しくはないSTEPでサブモジュール化することが可能でした。ただ、サブモジュール化は初めての方は惑う印象があるので、この手順が誰かの助けになれば幸いです。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?