![バージョン管理システムPlastic SCMを使ってみた](https://devio2023-media.developers.io/wp-content/uploads/2022/05/eyecatch_plastic-scm_1200x630.png)
バージョン管理システムPlastic SCMを使ってみた
今回はゲーム開発に適したバージョン管理システムであるPlastic SCMを使ってみました。Plastic SCMを利用することで、手軽にバージョン管理の仕組みをプロジェクトに導入できます。
今回はPlastic SCMのプロジェクトへの導入からUnrealEngine4(以降、UE4と表記)向けプロジェクトでバージョン管理まで行ってみました。
Plastic SCMとは
Plastic SCMはゲームのプロジェクト管理に特化したバージョン管理システムです。2020年にUnity社に買収されたため、Unityでは標準的に利用できるSCMとなっています。また、UnrealEngineもサポート対象であり4.11以降とUnrealEngine5をサポートしています(プラグインもgithubにて配布されています)。そのため、いずれのゲームエンジンでも利用できるSCMとなります。
Plastic SCMの特徴としては、次の点があります。
ユーザに応じたGUIツールをサポート
Plastic SCMは、ユーザが開発者もしくはアーティストによって表示するUIが切り替えられます。
Plastic SCMは、アーティスト向けのシンプルなUIを提供、開発者には開発に必要な様々な機能を表示といったように、利用者に応じてUIを切り替えられるので、よりわかりやすいUIとなっています。
同じリポジトリを開発者向けの設定とアーティスト向けの設定で、それぞれで表示してみました。
まず、開発者向けのUIです。
そしてUIはアーティスト向けです。開発者向けUIに比べて表示されている機能がシンプルとなってます。
柔軟なファイル管理手法をサポート
バージョン管理対象となっているファイル管理手法がCentralized(一元型)、Distributed(分散型)のいずれの方法が選べるようになっています。
Centralized(一元型)とはSubversionのように中央のサーバにあるファイルに対してバージョン管理を行う仕組みを指します。Distributed(分散型)は、gitのようにバージョン管理しているリポジトリが分散して管理できる仕組みです。
PlasticSCMは目的などに応じて一元型、分散型を使い分けて運用できる仕組みとなっています。
小規模開発~大規模開発までサポート
Plastic SCMには、CloudバージョンとEnterpriseバージョンの二つがあります。Cloudバージョンは、Plastic SCMサーバ(PlasticCloudと呼ばれる)は既に用意されているものを使用するため、UnrealEngineなどのエディタやプロジェクトに対してPlastic SCMのクライアントを導入するだけで利用できるようになります。主に小~中規模のプロジェクトに向いているでしょう。
もう一方、Enterpriseバージョンもあります。こちらはPlastic SCMのサーバを自分たちで構築、運用していく仕組みです。もちろん、Plastic SCMのクライアントもプロジェクトに導入しなければなりません。運用の手間はかかりますが、その分柔軟な対応が可能となります。こちらは大規模なプロジェクトに向いているでしょう。
利用環境
Plastic SCMでファイルのバージョン管理を行うにあたり、以下の環境で利用しました。
- Windows 10
- UnrealEngine 4.27.2
- PlasticSCM Cloudバージョン
ユーザ登録
最初にユーザー登録を行います。 Unityアカウントがあればすぐにログイン可能です。無い場合はあらかじめ作っておくとよいでしょう。
Cloudバージョンは3名のユーザー、ストレージ容量5GBまでを無償で利用できます。お試しで利用する分には問題ないでしょう。ユーザーやファイル容量の追加をする場合は追加料金が発生します。
ユーザ登録を進めていくとPlastic Cloud(サーバ)の設定が必要な箇所があります。データセンターは世界にありますがJapanも選択肢にありますのでそれを選びます。またファイルを管理するためのOrganization nameも定義します。これでサーバの設定が完了しました。
Plastic SCMクライアントをインストール
次にWindowsPCにPlastic SCMクライアントをインストールします。Plastic SCMはUnrealEditorにて標準でサポートされてますが、実際に使用する際はcmというPlastic SCMのクライアントのコマンドが利用できることが必須となります。そのため事前にPlastic SCMのクライアントをインストールする必要があります。
ではクライアントのインストールを行っていきます。Plastic SCMのダウンロードへアクセスします。その後、Cloud EditionのDownloadボタンを押します。
PlasticSCM-11.xxx.xxx.xxx-windows-cloud-installer.exeといったファイルがダウンロードされるので、インストーラを起動しインストールを進めます。
インストーラ中、Plastic SCMへのサインインが要求されます。そのため、先ほど作成したPlastic SCMのアカウントでログインします。ログインを行うことでPlasticCloudの設定とクライアントの設定が紐付けされます。
Plastic SCMクライアントのパス設定を行う
次にインストールしたPlastic SCMがターミナルからも利用できるようにPathに設定追加を行います。環境変数Pathに対して、c:\Program Files\PlasticSCM5\clientを追加します。これでターミナルからもPlastic SCMが利用できるようになります。
ターミナルからcmコマンドを入力するとhelpが表示されます。
UE4のプロジェクトにPlastic SCMプラグインをコピー
次にUE4のプロジェクトにPlastic SCMを導入します。あらかじめUE4のプロジェクトを作成しておきます。
UnrealEditorでは標準でサポートされてますが、せっかくなので最新版プラグインを導入します。Plastic SCMのUnrealEngine4およびUnrealEngine5向けのプラグインの最新版は、githubにて配布されています。今回は、UE4PlasticPlugin-1.5.0.zipを導入しました。
ダウンロードしたzipファイルを展開するとplugins/UE4PlasticPluginフォルダが生成されます。ので、このPluginsフォルダごとUE4プロジェクトのルートフォルダ(.uprojectファイルがあるフォルダ)にコピーします。
Plastic SCMを利用するための初期設定
UE4プロジェクトに対してPlastic SCMで管理できるよう初期設定します。初期設定を実施するには、Plastic SCMのアプリケーションの1つであるClient configuration wizardを利用します。スタートメニューから起動します。
最初にPlastic SCMのログインを行います。ログインするとそのユーザが所属しているオーガナイゼーションが表示されます。
所属するオーガナイゼーションをJoinした後に、Plastic SCMをdeveloper(開発者)として利用するか、Artist(アーティスト)として利用するかを選択します。この選択によって先ほど紹介したようにUIが違ってきます。今回はdeveloperとして登録します。
次に、リポジトリをCentralized(中央的)と、Distributed(分散的)のどちらでリポジトリ管理するかを選択します。CentralizedはSubversionに近い管理方法ですし、Distributedはgitに近い管理方法となります。
今回はCentralizedとして管理していきます。
あとはRepository、Workspace name、Path on diskをそれぞれ設定します。あとは、OKボタンを押すことでリポジトリの初期化が完了します。
UE4プロジェクトでの設定
次にUnrealEditorでのPlastic SCMを使用するよう設定します。まず、バージョン管理のメニューからPlasticSCM2を選択します。
これでPlastic SCMのリポジトリに登録できる準備ができました。ignore.confファイルが存在していませんので、ignore.confファイルを追加しますのボタンをクリックしておきます。
あとは”設定を承認”をクリックすると設定完了となります。
UnrealEditorでバージョン管理を行う
ではUnrealEditorでファイル管理を行ってみます。何かしらの変更を行った後、ソースコントロールにサブミットを選択します。
すると、更新対象となるファイルの一覧が表示されますので、更新内容を記述した上でサブミットをクリックします。
あとは、サーバとの同期を取る時には「ワークスペースを同期/更新」を選択します。
最後に
Plastic SCMは、一元型、分散型でのファイル管理や、職種に応じたUIを用意するなど、これまでになかった様々な機能を提供したバージョン管理システムとなっています。
UnityやUnrealEngineなどの主要なゲームエンジンにも対応しているなど使い勝手も良いです。試しに使ってみてはいかがでしょうか。