1個のルームで次のような担当に分かれて作業をしたいと思っています。 ・当たり判定オブジェクトを置いてレベルを設計をする担当 ・当たり判定オブジェクトに背景のタイルを追加する担当
バージョン管理を使い作業を共有しているのですが、この作業はどちらも同じ1個のルームの変更になり、競合してしまいます。 ですので、必ずどちらか片方ずつでしか作業ができない問題があります。 なにか少しでも効率化できそうなアイデアがあれば教えていただきたいです。
個人的にすごく興味があるこのトピック。 以下の内容で間違いないでしょうか?違っていたら教えて下さい。
roomの構成
(1) 当たり判定オブジェクトを置いてレベルを設計をする担当 ここでの作業は当たり判定用オブジェクトをroomに配置することでしょうか。
(2) 当たり判定オブジェクトに背景のタイルを追加する担当 ここでの作業は背景を描いて背景タイルレイヤーを作ることでしょうか。 同時並行して進めると時間は短縮されるはずだが、競合が起こる。 (1)→(2)または(2)→(1)の順で進めると競合はしないが時間がかかる。 という問題意識でしょうか。
合ってます!
(2)のところは背景タイルレイヤーのタイルを追加していく作業も含めます。
もっといい方法がある気がしますしどれくらい効率化できるかはやってみないと分かりませんが、 競合させずに同時並行する方法を考えました。 (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から背景レイヤーをコピペする
自分の作業用roomにコピペして作業してる間に相手も作業を進めるので、リアルタイムに同期するのは無理なのでこれがどれくらい問題になるか。 コピペして自分の作業用roomに反映させるのがどれくらい面倒くさいか。 が気になるところです。
追記 ここまで書いて、根本的に的外れか面倒にするだけのことを書いた気がします…! 「競合する」というのは具体的にどういうことが起こるのか教えてもらえるでしょうか? 同じプロジェクトを複数人で編集すると「上書きしちゃう」ってことが起こるという話でしょうか?
案ありがとうございます! 作業用ルームと最終的なルームで分けるのはいいかもしれません。 ちょっと試してみようかなと思います
>> 6 同じファイル(ここではroomの.yyファイル)を複数人で変更した際に起こる状態で、どちらかの変更を優先するかを選ばないといけません。 ですので、どちらかの変更をなかったことにしないといけないです。
.yyの中身はjsonフォーマットの様に見えて、中身を見るとレイヤーごとにデータが存在しています。
当たり判定オブジェクトレイヤーと背景などのグラフィックレイヤーが分かれているのであれば、レイヤーごとのデータを取得することができるので、yyに対してインポートやエクスポートできるツールを作って、抜き出したデータのみをgitなどのバージョン管理ツールで管理します。
抜き出したデータは、好きなバージョンをとってきてから、インポートツールでyyに入れることで、やり直したり、当たり判定オブジェクト担当者が、背景のタイル担当者の変更を入れ込むなどの開発ができそうです。
開発用サブツールは、pythonとかrubyとかphpとかwindowsで動く適当な言語で、サブツールを作ると便利になると思います。
>> 9 ツール作成のコストがかかりますが、実現できたらかなり有効だと感じました。 アイデアありがとうございます!
jsonファイルを扱うライブラリは各言語に星の数ほどあり、jsonを扱うという処理自体、プログラムでよくやりたいことにあがってくることなので、サンプルも数多ありなので、ツール作成の難易度やコストはそこまで高くないかもしれません。GMLがわかる人なら、たぶん簡単に作れるレベルそうです。
問題点があるとすれば、中身のデータが今回のようにただのテキストファイルだと楽ですが、バイナリなど独自の形式になったり、yyのフォーマットが変わったりしたときに、ツールをメンテナンスする必要があることがリスクかもしれません。 yoyoのさじ加減でアップデートが行われることを考えれば、メンテナンスコストの方が、高いかもしれません。
一応次のようなワークフローでやっていこうと思いやす。
1当たり判定ルームをそのままメインルームとして活用し、それをコピーしてタイル追加ルームを作成します(この時点で当たり判定が共有されます) 2タイルが完成したらタイル追加ルームをGITにプッシュします。 3受け取ったタイル追加ルームのタイル情報をツールを使ってメインルームにコピペします。 3当たり判定の変更やステージの追加の変更が起きたら1を繰り返します。
複数ルーム+コピペの自動化ツールというものにとりあえずなりました。 ツールといってもタイル追加ルームの.yyファイルにあるタイル情報を抜き取りそれをメインルームの.yyファイルに上書きするというだけのものです。 一旦はこれでコピペ作業が一瞬で終わらせることができます。
ここからまたいろんな問題がありますがとりあえずこれでなんとかやっていきます。 アイデアありがとうございました。
不適切なコンテンツとして通報するには以下の「送信」ボタンを押して下さい。 管理チームへ匿名通報が送信されます。あなたが誰であるかを管理チームに特定されることはありません。
どのように不適切か説明したい場合、メッセージをご記入下さい。空白のままでも通報は送信されます。
通報履歴 で、あなたの通報と対応時のメッセージを確認できます。
トピックをWIKIWIKIに埋め込む
次のコードをWIKIWIKIのページに埋め込むと最新のコメントがその場に表示されます。
// generating...
プレビュー
マニュアル(ver2~2.2.x) マニュアル(ver2.3~) YoYoGames YoYoGames 公式コミュニティ GM関連のYoutubeチャンネル集 解説・資料サイト集(日本語) 解説・資料サイト集(英語)
ここまでがあなたのコンテンツ
ここからもあなたのコンテンツ
個人的にすごく興味があるこのトピック。
以下の内容で間違いないでしょうか?違っていたら教えて下さい。
roomの構成
(1) 当たり判定オブジェクトを置いてレベルを設計をする担当
ここでの作業は当たり判定用オブジェクトをroomに配置することでしょうか。
(2) 当たり判定オブジェクトに背景のタイルを追加する担当
ここでの作業は背景を描いて背景タイルレイヤーを作ることでしょうか。
同時並行して進めると時間は短縮されるはずだが、競合が起こる。
(1)→(2)または(2)→(1)の順で進めると競合はしないが時間がかかる。
という問題意識でしょうか。
合ってます!
(2)のところは背景タイルレイヤーのタイルを追加していく作業も含めます。
もっといい方法がある気がしますしどれくらい効率化できるかはやってみないと分かりませんが、
競合させずに同時並行する方法を考えました。
(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から背景レイヤーをコピペする
自分の作業用roomにコピペして作業してる間に相手も作業を進めるので、リアルタイムに同期するのは無理なのでこれがどれくらい問題になるか。
コピペして自分の作業用roomに反映させるのがどれくらい面倒くさいか。
が気になるところです。
追記
ここまで書いて、根本的に的外れか面倒にするだけのことを書いた気がします…!
「競合する」というのは具体的にどういうことが起こるのか教えてもらえるでしょうか?
同じプロジェクトを複数人で編集すると「上書きしちゃう」ってことが起こるという話でしょうか?
案ありがとうございます!
作業用ルームと最終的なルームで分けるのはいいかもしれません。
ちょっと試してみようかなと思います
>> 6
同じファイル(ここではroomの.yyファイル)を複数人で変更した際に起こる状態で、どちらかの変更を優先するかを選ばないといけません。
ですので、どちらかの変更をなかったことにしないといけないです。
.yyの中身はjsonフォーマットの様に見えて、中身を見るとレイヤーごとにデータが存在しています。
当たり判定オブジェクトレイヤーと背景などのグラフィックレイヤーが分かれているのであれば、レイヤーごとのデータを取得することができるので、yyに対してインポートやエクスポートできるツールを作って、抜き出したデータのみをgitなどのバージョン管理ツールで管理します。
抜き出したデータは、好きなバージョンをとってきてから、インポートツールでyyに入れることで、やり直したり、当たり判定オブジェクト担当者が、背景のタイル担当者の変更を入れ込むなどの開発ができそうです。
開発用サブツールは、pythonとかrubyとかphpとかwindowsで動く適当な言語で、サブツールを作ると便利になると思います。
>> 9
ツール作成のコストがかかりますが、実現できたらかなり有効だと感じました。
アイデアありがとうございます!
jsonファイルを扱うライブラリは各言語に星の数ほどあり、jsonを扱うという処理自体、プログラムでよくやりたいことにあがってくることなので、サンプルも数多ありなので、ツール作成の難易度やコストはそこまで高くないかもしれません。GMLがわかる人なら、たぶん簡単に作れるレベルそうです。
問題点があるとすれば、中身のデータが今回のようにただのテキストファイルだと楽ですが、バイナリなど独自の形式になったり、yyのフォーマットが変わったりしたときに、ツールをメンテナンスする必要があることがリスクかもしれません。
yoyoのさじ加減でアップデートが行われることを考えれば、メンテナンスコストの方が、高いかもしれません。
一応次のようなワークフローでやっていこうと思いやす。
1当たり判定ルームをそのままメインルームとして活用し、それをコピーしてタイル追加ルームを作成します(この時点で当たり判定が共有されます)
2タイルが完成したらタイル追加ルームをGITにプッシュします。
3受け取ったタイル追加ルームのタイル情報をツールを使ってメインルームにコピペします。
3当たり判定の変更やステージの追加の変更が起きたら1を繰り返します。
複数ルーム+コピペの自動化ツールというものにとりあえずなりました。
ツールといってもタイル追加ルームの.yyファイルにあるタイル情報を抜き取りそれをメインルームの.yyファイルに上書きするというだけのものです。
一旦はこれでコピペ作業が一瞬で終わらせることができます。
ここからまたいろんな問題がありますがとりあえずこれでなんとかやっていきます。
アイデアありがとうございました。