0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GMS2でプロジェクトをバージョン管理したい

Last updated at Posted at 2024-12-16

これはGameMaker日本語コミュニティ主催の「GameMaker Advent Calendar 2024」 DAY16の記事です

こんにちは、いちたくさんです。普段インターネットではゲーム実況したりゲーム実況見りたゲーム開発したりしてます。表社会ではエンジニアやっているので、今回はテックな話を書こうと思います。

目次

  1. Game Maker Studio2本体にはバージョン管理機能がないという話
  2. Gitを導入しよう
    2.1 Gitとは
    2.2 Gitの導入方法
    2.3 GMS2上でプロジェクトをGitと紐付けする
  3. バージョン管理をしてみる
    3.1 バージョン管理の基本
    3.2. 作業をやりなおす
    3.3. バージョンを切り分ける
  4. おわりに

Game Maker Studio2本体にはバージョン管理機能がないという話

カタカタとプログラミングしてるとこんなことを感じることがあると思います。

  • 様々な機能を平行して実装するとどこまで何を作ったのかわからなくなりがち
  • 機能追加の際にコードの追記箇所と既存箇所の区別がつかなくなりがち
  • 最新版・デモ版・デバック用等の完成品を別フォルダで管理するのが手間かかりがち

これらの悩みはバージョン管理ツール=Gitを導入すると解決できます

Gitを導入しよう

Gitとは

Gitはかなり一般的なバージョン管理システムです。主に複数人で1つのプロジェクトを管理する際に使われたりするのですが、個人での開発でも重宝するパワーのあるツールです。

特に、GMS2ではオフィシャルにGitによるソースコードの管理を推奨?しており、以下の通りにマニュアルページも存在しています。

一方で、上記のマニュアルページはGamemaker Manualじゃいつものことですがあまりマニュアルしていません。
また、GMS2上ではGitとしてできる操作が限られているため、今回は導入したGit上でバージョン管理の操作を実施する方法を書いていきます。

Gitの導入方法

Gitのインストール方法はググれば沢山出てくるためそちらを参照してください。

インフォメーション
書くのがめんどいというわけではありません

参考としては以下のリンクあたりがわかりやすいかなと思います

GMS2上でプロジェクトをGitと紐付けする

インストールをしたGitをGMS2側でも使えるようにするためいくつか設定を行ないます。

今回使用する環境は以下の通り

  • OS
    • Windows 10 Pro(22H2)
  • GameMaker Studio 2
    • IDEバージョン:2023.11.1.129 Steam
    • ランタイム:2023.11.1.160
  • Git for Windows
    • git version 2.28.0.windows.1

コマンドライン操作はGit Bashを使用します。また、私は昔にインストールしたGitをあんまりアップデートしないまま使用し続けていますが、最新の者でも基本的な操作は変りません。

共通設定の変更

まずはGMS2内でインストールしたGitを紐付けます。手順としては以下の通り。

  1. [ファイル]タブをクリック
  2. [環境設定]の項目をクリック
  3. [プラグイン]>[ソース管理(Git)]をクリック
  4. インストールしたGitのgit.exeがあるフォルダを指定する
  5. [適用]をクリックして設定を反映させる

pic001.png

プロジェクト内の設定

次にプロジェクト内でバージョン管理の使用を有効化させます。

  1. [ゲームオプション]をクリック
  2. [メインオプション]>[全般]をクリック
  3. 「ソース管理を有効にする」のチェックボックスをクリックして有効化する
  4. [適用]をクリックして設定を反映させる

pic002.png

バージョン管理の有効化

最後にプロジェクトのバージョン管理を有効化させます。これにより、Gitでのバージョン管理の操作が可能になります。

  1. [ソース管理]>[プロジェクトリポジトリを作成]をクリック

pic003.png
2. アセットブラウザの各項目の右側に緑色のチェックマークが付いていたら有効化されている
pic004.png

バージョン管理をしてみる

上記の設定によりバージョンの使用が可能になったため、ここからは実際にバージョン管理を使った簡単な操作を説明します。
バージョン管理のある開発では、プロジェクト内で各機能を追加するごとにcommitを実行することで定期的にプロジェクトを保存しながら作業を進めていきます。

バージョン管理の基本

  1. GMS2上で作業を進める(変更を加えた項目には赤色のビックリマークが付く)
    pic005.png

  2. Git Bashを開きプロジェクトを保存しているフォルダに移動する
    pic006.png

  3. git statusで保存するファイルを確認してgit commit -am "◯◯"で保存を実行する
    (◯◯には加えた変更の内容の詳細を簡単に記載できる)
    pic007.png

  4. GMS2上の[ソース管理]>[変更をコミット]をクリックするとGMS2内でコミットが反映され赤色のビックリマークが緑色のチェックマークに変わる
    pic008.png

3にてgit commit -am "◯◯"を実行した時点でcommit自体は完了しており、4におけるGMS2上の操作は画面における表示の同期を取るための操作になるため実施しなくても影響ありません。Git Bash上にてcommitした時点でGMS2上の画面にコミット結果が同期的に反映されない(緑色のチェックマークに変わらない)のが仕様なのかどうか私にもよくわかりません...

作業をやりなおす

色々と機能を追加していくとこれまで正常に動いていた箇所が動かなくなったり、実装したは良いものの気に入らない挙動をしてしまったり、結果としてやっぱり追加をとりやめて元に戻したくなることがあると思います。

バージョン管理を導入していると元に戻す作業がとても楽になります。簡単な流れとしては以下の通り。

  1. よくわかんなくなってしまった状態
    pic009.png

  2. Git Bash上で以下のコマンドを順に実行する

$ git reset HEAD .
$ git checkout .
$ git clean -df .

git reset HEAD .は新規に作成したファイルのgit上の登録解除。git checkout .は修正したファイルの修正内容のリセット。git clean -df .は新規作成したファイルの削除になります。
3. GMS2上でプロジェクトのリロード画面が表示されるためリロードを実施する
pic010.png

バージョンを切り分ける

バージョン管理をすると1つのフォルダ内で完成版及び開発版の種類別切り分け管理ができます。

例として、上記のフローの通りに開発版・デバッグ版・デモ版の3種類を用意した場合、それぞれをコマンド1つで切り替えをすることができます。切り分けた各フローをブランチと言います。

以下に簡単なブランチ切り替えの例を書きます。

  1. コミットをする
    pic021.png

  2. Git Bash上で以下のコマンドを順に実行する

$git branch ◯◯
$git checkout ◯◯

※◯◯は任意の名前。今回はdev_demoとします

pic011.png
 青文字の箇所が◯◯と一致していれば問題なしです。
3. 変更後GMS2上で修正を加え、commitを実行する(今回はisDemoを変更する)
pic012.png

pic013.png
4. Git Bash上でgit checkout ◯◯を実行してブランチを切り替える(最初のmasterブランチに切り変える)
pic014.png
5. GMS2上でプロジェクトのリロード画面が表示されるためリロードを実施する
pic015.png
6. GMS2上だとisDemoがfalseの状態(1の状態)に戻っている
pic016.png
7. 現状のフロー(master)を修正してコミットする(ここではisDevelop変数を追加する)
pic017.png
pic018.png
8. is_demoブランチに戻るとisDevelop変数がない状態になります
pic019.png
pic020.png

上記の流れをフロー図にするとこんな感じ

上記のように分岐した場合、commit完了後の状態であれば好きなタイミングでmasterdev_demoの切り替えができます。

おわりに

今回はgitの導入と簡単な操作を記載しました。そもそもgitベースの開発を導入すると定期的なcommitにより作成する領域を明確にしながら作業を進めることができます。加えてgitのブランチ分けを上手く使うと開発版・デモ版等をわざわざ別フォルダで管理する必要がなくなり楽になる他、開発中の「やっぱなし!やりなおし!」ができて開発作業が非常に楽になります。

拙い文章ではありましたが皆さんのゲームdevの糧になっていただければ幸いです。不明点やよくわからん点、誤字等がある場合はコメントください。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?