GameMaker 日本語掲示板

【解決】チーム開発でのレベルデザインとタイル作成の分担作業の効率が悪い問題

12 コメント
views
17 フォロー

1個のルームで次のような担当に分かれて作業をしたいと思っています。
・当たり判定オブジェクトを置いてレベルを設計をする担当
・当たり判定オブジェクトに背景のタイルを追加する担当

バージョン管理を使い作業を共有しているのですが、この作業はどちらも同じ1個のルームの変更になり、競合してしまいます。
ですので、必ずどちらか片方ずつでしか作業ができない問題があります。
なにか少しでも効率化できそうなアイデアがあれば教えていただきたいです。

生高橋
作成: 2024/06/24 (月) 13:31:58
最終更新: 2024/06/26 (水) 09:54:40
通報 ...
1
asa 2024/06/24 (月) 14:03:00 修正

個人的にすごく興味があるこのトピック。
以下の内容で間違いないでしょうか?違っていたら教えて下さい。

roomの構成

  • 移動の当たり判定を、roomに配置した当たり判定用オブジェクトで行う
  • 背景はタイルレイヤーに表示する

(1) 当たり判定オブジェクトを置いてレベルを設計をする担当
ここでの作業は当たり判定用オブジェクトをroomに配置することでしょうか。

(2) 当たり判定オブジェクトに背景のタイルを追加する担当
ここでの作業は背景を描いて背景タイルレイヤーを作ることでしょうか。


同時並行して進めると時間は短縮されるはずだが、競合が起こる。
(1)→(2)または(2)→(1)の順で進めると競合はしないが時間がかかる。
という問題意識でしょうか。

2
生高橋 2024/06/24 (月) 14:05:49 >> 1

合ってます!

3
生高橋 2024/06/24 (月) 14:07:32 >> 1

(2)のところは背景タイルレイヤーのタイルを追加していく作業も含めます。

4

もっといい方法がある気がしますしどれくらい効率化できるかはやってみないと分かりませんが、
競合させずに同時並行する方法を考えました。
(1)と(2)の作業用roomを用意します。
(1)と(2)の担当者は「相手の作業用roomを変更しない」というルールを守ることとします。
(1)と(2)の作業が完了したら、最終的にroom1に統合します

(1)
当たり判定オブジェクト配置作業用room : room1_for_obj
必要なら背景をroom1_for_backgroundからコピペしてもってくる

(2)
背景制作用room : room1_for_background
必要なら当たり判定objをroom1_for_objからコピペしてもってくる

(3)
(1)(2)を統合して完成させるroom : room1
room1_for_objから当たり判定オブジェクトをコピペする
room1_for_backgroundから背景レイヤーをコピペする

6

自分の作業用roomにコピペして作業してる間に相手も作業を進めるので、リアルタイムに同期するのは無理なのでこれがどれくらい問題になるか。
コピペして自分の作業用roomに反映させるのがどれくらい面倒くさいか。
が気になるところです。

追記
ここまで書いて、根本的に的外れか面倒にするだけのことを書いた気がします…!
「競合する」というのは具体的にどういうことが起こるのか教えてもらえるでしょうか?
同じプロジェクトを複数人で編集すると「上書きしちゃう」ってことが起こるという話でしょうか?

7
生高橋 2024/06/24 (月) 15:41:31

案ありがとうございます!
作業用ルームと最終的なルームで分けるのはいいかもしれません。
ちょっと試してみようかなと思います

8
生高橋 2024/06/24 (月) 16:57:18 修正

>> 6
同じファイル(ここではroomの.yyファイル)を複数人で変更した際に起こる状態で、どちらかの変更を優先するかを選ばないといけません。
ですので、どちらかの変更をなかったことにしないといけないです。

9
名前なし 2024/06/24 (月) 21:24:24 修正

.yyの中身はjsonフォーマットの様に見えて、中身を見るとレイヤーごとにデータが存在しています。

当たり判定オブジェクトレイヤーと背景などのグラフィックレイヤーが分かれているのであれば、レイヤーごとのデータを取得することができるので、yyに対してインポートやエクスポートできるツールを作って、抜き出したデータのみをgitなどのバージョン管理ツールで管理します。

抜き出したデータは、好きなバージョンをとってきてから、インポートツールでyyに入れることで、やり直したり、当たり判定オブジェクト担当者が、背景のタイル担当者の変更を入れ込むなどの開発ができそうです。

開発用サブツールは、pythonとかrubyとかphpとかwindowsで動く適当な言語で、サブツールを作ると便利になると思います。

10
生高橋 2024/06/24 (月) 21:43:33

>> 9
ツール作成のコストがかかりますが、実現できたらかなり有効だと感じました。
アイデアありがとうございます!

11

jsonファイルを扱うライブラリは各言語に星の数ほどあり、jsonを扱うという処理自体、プログラムでよくやりたいことにあがってくることなので、サンプルも数多ありなので、ツール作成の難易度やコストはそこまで高くないかもしれません。GMLがわかる人なら、たぶん簡単に作れるレベルそうです。

問題点があるとすれば、中身のデータが今回のようにただのテキストファイルだと楽ですが、バイナリなど独自の形式になったり、yyのフォーマットが変わったりしたときに、ツールをメンテナンスする必要があることがリスクかもしれません。
yoyoのさじ加減でアップデートが行われることを考えれば、メンテナンスコストの方が、高いかもしれません。

12
生高橋 2024/06/26 (水) 09:54:23 >> 10

一応次のようなワークフローでやっていこうと思いやす。

1当たり判定ルームをそのままメインルームとして活用し、それをコピーしてタイル追加ルームを作成します(この時点で当たり判定が共有されます)
2タイルが完成したらタイル追加ルームをGITにプッシュします。
3受け取ったタイル追加ルームのタイル情報をツールを使ってメインルームにコピペします。
3当たり判定の変更やステージの追加の変更が起きたら1を繰り返します。

複数ルーム+コピペの自動化ツールというものにとりあえずなりました。
ツールといってもタイル追加ルームの.yyファイルにあるタイル情報を抜き取りそれをメインルームの.yyファイルに上書きするというだけのものです。
一旦はこれでコピペ作業が一瞬で終わらせることができます。

ここからまたいろんな問題がありますがとりあえずこれでなんとかやっていきます。
アイデアありがとうございました。