これはGameMaker日本語コミュニティ主催の「GameMaker Advent Calendar 2024」 DAY16の記事です
こんにちは、いちたくさんです。普段インターネットではゲーム実況したりゲーム実況見りたゲーム開発したりしてます。表社会ではエンジニアやっているので、今回はテックな話を書こうと思います。
目次
- Game Maker Studio2本体にはバージョン管理機能がないという話
-
Gitを導入しよう
2.1 Gitとは
2.2 Gitの導入方法
2.3 GMS2上でプロジェクトをGitと紐付けする -
バージョン管理をしてみる
3.1 バージョン管理の基本
3.2. 作業をやりなおす
3.3. バージョンを切り分ける - おわりに
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を紐付けます。手順としては以下の通り。
- [ファイル]タブをクリック
- [環境設定]の項目をクリック
- [プラグイン]>[ソース管理(Git)]をクリック
- インストールしたGitの
git.exe
があるフォルダを指定する - [適用]をクリックして設定を反映させる
プロジェクト内の設定
次にプロジェクト内でバージョン管理の使用を有効化させます。
- [ゲームオプション]をクリック
- [メインオプション]>[全般]をクリック
- 「ソース管理を有効にする」のチェックボックスをクリックして有効化する
- [適用]をクリックして設定を反映させる
バージョン管理の有効化
最後にプロジェクトのバージョン管理を有効化させます。これにより、Gitでのバージョン管理の操作が可能になります。
- [ソース管理]>[プロジェクトリポジトリを作成]をクリック
2. アセットブラウザの各項目の右側に緑色のチェックマークが付いていたら有効化されている
バージョン管理をしてみる
上記の設定によりバージョンの使用が可能になったため、ここからは実際にバージョン管理を使った簡単な操作を説明します。
バージョン管理のある開発では、プロジェクト内で各機能を追加するごとにcommit
を実行することで定期的にプロジェクトを保存しながら作業を進めていきます。
バージョン管理の基本
-
git status
で保存するファイルを確認してgit commit -am "◯◯"
で保存を実行する
(◯◯には加えた変更の内容の詳細を簡単に記載できる)
-
GMS2上の[ソース管理]>[変更をコミット]をクリックするとGMS2内でコミットが反映され赤色のビックリマークが緑色のチェックマークに変わる
3にてgit commit -am "◯◯"
を実行した時点でcommit自体は完了しており、4におけるGMS2上の操作は画面における表示の同期を取るための操作になるため実施しなくても影響ありません。Git Bash上にてcommitした時点でGMS2上の画面にコミット結果が同期的に反映されない(緑色のチェックマークに変わらない)のが仕様なのかどうか私にもよくわかりません...
作業をやりなおす
色々と機能を追加していくとこれまで正常に動いていた箇所が動かなくなったり、実装したは良いものの気に入らない挙動をしてしまったり、結果としてやっぱり追加をとりやめて元に戻したくなることがあると思います。
バージョン管理を導入していると元に戻す作業がとても楽になります。簡単な流れとしては以下の通り。
$ git reset HEAD .
$ git checkout .
$ git clean -df .
git reset HEAD .
は新規に作成したファイルのgit上の登録解除。git checkout .
は修正したファイルの修正内容のリセット。git clean -df .
は新規作成したファイルの削除になります。
3. GMS2上でプロジェクトのリロード画面が表示されるためリロードを実施する
バージョンを切り分ける
バージョン管理をすると1つのフォルダ内で完成版及び開発版の種類別切り分け管理ができます。
例として、上記のフローの通りに開発版・デバッグ版・デモ版の3種類を用意した場合、それぞれをコマンド1つで切り替えをすることができます。切り分けた各フローをブランチ
と言います。
以下に簡単なブランチ切り替えの例を書きます。
$git branch ◯◯
$git checkout ◯◯
※◯◯は任意の名前。今回はdev_demo
とします
青文字の箇所が◯◯と一致していれば問題なしです。
3. 変更後GMS2上で修正を加え、commitを実行する(今回はisDemo
を変更する)
4. Git Bash上でgit checkout ◯◯
を実行してブランチを切り替える(最初のmasterブランチに切り変える)
5. GMS2上でプロジェクトのリロード画面が表示されるためリロードを実施する
6. GMS2上だとisDemo
がfalseの状態(1の状態)に戻っている
7. 現状のフロー(master)を修正してコミットする(ここではisDevelop変数を追加する)
8. is_demo
ブランチに戻るとisDevelop
変数がない状態になります
上記の流れをフロー図にするとこんな感じ
上記のように分岐した場合、commit完了後の状態であれば好きなタイミングでmaster
とdev_demo
の切り替えができます。
おわりに
今回はgitの導入と簡単な操作を記載しました。そもそもgitベースの開発を導入すると定期的なcommitにより作成する領域を明確にしながら作業を進めることができます。加えてgitのブランチ分けを上手く使うと開発版・デモ版等をわざわざ別フォルダで管理する必要がなくなり楽になる他、開発中の「やっぱなし!やりなおし!」ができて開発作業が非常に楽になります。
拙い文章ではありましたが皆さんのゲームdevの糧になっていただければ幸いです。不明点やよくわからん点、誤字等がある場合はコメントください。