xR Deveropers Japan Blog

xRTechが好き・興味がある方のコミュニティです。勉強会やスラックなどでの情報共有を行っています。興味のある方、お気軽にご参加ください^^プログラミングなど未経験の入門希望者も歓迎しています。

UnityプロジェクトをGithubリポジトリ+SourceTreeで管理するセッティング方法(Windows10)(動作確認2019年2月28日)

こんにちは 開発チームのmawaです。

想定読者

  • Unityプロジェクトをチーム開発したい
  • GithubでUnityプロジェクトのコードやモデルをチーム開発に使いたい
  • Windows10でUnityEditor使って開発したい

という方向けです。Unityでは3Dや2Dのグラフィックデータをたくさん扱うことが多いため、他のWebアプリなどの作成プロジェクトのようにGit+Githubというシンプル構成では対応がなかなか厳しいものになりやすいので、プラスアルファの運用知識が必要です。具体的にはGitLFSという仕組みも利用しながら、UnityEditor~GitHubまで統一的に連携が撮れた状態で開発することになります。そのためのノウハウをまとめました。

今回はWindows10でのメモです。Macでも大幅には変わらないと思いますが、GPUリソースが現状比較的低コストで使えるWindowsマシンでのUnity開発からのチーム共有のノウハウについて、まとまった記事が見つからなかったので自分でまとめました。

必要なパッケージ一覧

  • WSL(Windows10で使えるUbuntu)
  • Git for Windows
  • Git LFS(Git とは別のパッケージなので注意)
  • SourceTree for Windows
  • BitBucketアカウント(SourceTreeセットアップ時に強制加入させられる。bitbucket自体は今回は使わない)
  • GitHubアカウント
  • BitBucketアカウント(SourceTreeセットアップ時に強制加入させられる。bitbucket自体は今回は使わない)
  • Unity(バージョンは、3.3f1)

作業工程

[1]WSLがセットアップされている状態にあること

[2]Git for Windows のインストール

[3]GitHubのアカウント取得 ↓
[4]GitHubの管理用リポジトリ作成(unity用 .gitignoreの指定がおススメ)

[5]SourceTree for Windows のインストール

[6]SourceTree と GitHubアカウントの連携

[7]SourceTree にて管理するローカルリポジトリの登録

8Git LFSのインストール

[9]SourceTree にて管理するローカルリポジトリでのGit LFS の適用(初期化)

[10]SourceTree にて管理するローカルリポジトリGitHubの管理用リポジトリの連携

[11]1度git pullしてリモートとローカル同期initial commit

[12].gitignore.gitattributes のgit add → git commit →git push

[13]通常のgithub運用開始、git pull からの作って、git add → git commit →git pushのサイクル開始

作業別具体的メモ

[1]WSLがセットアップされている状態にあること

WSLのセットアップはこういう記事がたくさんあるので参考になさってください qiita.com

[2]Git for Windows のインストール

ここからダウンロード gitforwindows.org

ダウンロード時は下記以外はデフォルト設定でインストールしました。

Git Bashと、Git LFSは欲しいので、チェックしておきます。あとは惰性。 f:id:k_mawa:20190301005648p:plain

パスが変化するのは怖いのでこれを選択 f:id:k_mawa:20190301005702p:plain

これでうまくいきました。なぜかSourceTreeの運用中にGit LFSインストールされてないよとかウィンドウがでてインストール再度したので、なんかこのときのGitLFSが効いているのかどうか謎です。でも一応インストールしておいたほうが無難かなぁ・・・

[3]GitHubのアカウント取得

[4]GitHubの管理用リポジトリ作成(unity用 .gitignoreの指定がおススメ)

[5]SourceTree for Windows のインストール

ここからインストールください
ja.atlassian.com

[6]SourceTree と GitHubアカウントの連携

[7]SourceTree にて管理するローカルリポジトリの登録

[8]SourceTree にてGit LFSのインストール

[9]SourceTree にて管理するローカルリポジトリでのGit LFS の適用(初期化)

SourceTree「new tab」開く

「+Create」ボタン

「Create a repository」
- 保存先のパスを、Unityのプロジェクトのトップディレクトリを参照 - Proj名は参照後自動で入る
- 管理→Git

「次のアカウントでリポジトリを作成」→空欄(リモートリポジトリは後で登録するため)

「作成」

「クローン作成先のパス~はすでに存在しています。続行して、このフォルダにリポジトリを作成しますか?」→「はい」を選択

作業ツリーのファイルのところにファイルが並び、コミット前の状態になる。

git init まで完了した状態になる。

Git LFS initを行う。下記方法①と②どちらかを行えばOKだと思われる。(自分は両方やったので、どっちが効いたかわからない。たぶん①が効いた気がする。)

方法①「リポジトリ」>Git LFS >「リポジトリを初期化」>トラックファイルを適当にpngとかだけ設定する>.gitattributesもつくられる>あとでトラックファイル種類など追記する (git lfsが未インストールの場合、「ツール」>「オプション」でGitの設定を見て閉じようとすると「git lfs まだインストールされてませんけどしますか?」とでる)

方法②git bash を立ち上げて $ git lfs install

[10]SourceTree にて管理するローカルリポジトリGitHubの管理用リポジトリの連携

リモートリポジトリの設定
GitHubのURLをコピーしておく

「リモート」を選ぶ>「追加」

  • リモート名はorigin,URLはgithubリポジトリパス
  • RemoteAccountはGithubのアカウント(SourceTreeに設置しておく)


設定したら「OK」

[11]1度git pullしてリモートとローカル同期initial commit

1度リモートからプルしておく!(同期がおかしくなるエラーになる)
やらかしたときは、Pushに失敗してたらリセットで!

SourceTreeでGit訂正操作
qiita.com

[12].gitignore.gitattributes のgit add → git commit →git push

.gitignoreファイル生成(Win10だとなんかGUIで隠しファイルつくれないので、WSLでtouchコマンド叩いて作る。(Win10の場合、/mnt/c/Users/(ユーザー名)/Documents/配下にUnityプロジェクトのフォルダがデフォルトでは作られている。 編集は普通にできる。) ↓ .gitattributeファイル編集

下記記事が.gitignore.gitattributesの設定についてわかりやすい記事でした ikep.hatenablog.com

[13]通常のgithub運用開始、git pull からの作って、git add → git commit →git pushのサイクル開始

Unityの設定を変更

  • VersionControl→Mode VisibleMetaFiles
  • AssetSerialization→Mode Force Text

(よくわからないけど、最初からなってた)


UnityProj保存

残りのファイルをGitHubにプッシュ

OculusGoでレーザーで自在に操作可能なコントローラー配布中!と、そのパッケージControllerの調整記録

OculusGoでUIやそのほかゲームオブジェクトの挙動をレーザーで制御できるUnitypackageが配布されてまして、調整した時の記録です。

配布元ページ

これです。そのうちOculus公式アセットに組み込まれそうですね

developer.oculus.com

留意事項

2点注意事項あります。そのままビルドするとOculusGoコントローラーが回転して表示されてしまいます。ここを180と入れ込めばOKでした(2019年2月25日現在)

f:id:k_mawa:20190225175948p:plain

もう一点は、この公式ブログでの配布パッケージはrar形式で圧縮されているのですが、Win10だと7zipという解凍ソフトでないとエラーになることがあります。なお自分はPart1だけ7zipで解凍できました。Part2,3は解凍エラーになりました。謎です。

OculusGoテレポート移動の実装したときのメモ

f:id:k_mawa:20190211210808p:plain

OculusGoでテレポート移動の実装をしてみました。

単にカメラをフレームごとに座標移動させるとVR酔いしやすいといわれています。テレポート移動はVR酔いを防ぐのに有効と言われています。 xrdevja.hatenablog.com

参考になった記事

これです。日本語だとこれしかなかったかな・・・

qiita.com

上から順にやればいいのですが、初めてOculusのSDKをさわる方には、つまづく可能性もいくつかあったのでそれを補強します。

順序とつまづきポイント

0:必要なもの

  • Unity
  • Oculus Integration(OculusのSDKセット)
  • ArcLocomotion.unitypackage

1:OculusSDKをダウンロード

最近(前どうやったかな・・・)AssetStoreにありますね

https://assetstore.unity.com/packages/tools/integration/oculus-integration-82022?aid=1101lGoY&utm_source=aff

  • つまづきポイント:ArcLocomotion.unitypackage というサンプルはOculusSDKには入ってないので注意。

2: MainCameraをOVRCamerarigに切り替え

  • つまづきポイント:MainCameraは削除でOK

3: Tracked Remoteをコントローラーのアンカーに追加

ドラッグアンドドロップだけで完了^^

  • つまづきポイント:特になし

4: ArcLocomotion.unitypackageを入手

developer.oculus.com

  • つまづきポイント:下記の部分のリンクで入手です。なおUnitypackage直リンクではなく、rar圧縮ファイルになってますので注意ください。 f:id:k_mawa:20190211210144p:plain

5: ArcLocomotion.unitypackageを解凍

  • つまづきポイント:Win10の場合、なぜか解凍ツールでメジャーなLhaplusというソフトではエラーが起きました。7zipというツールでは解凍できました。

sevenzip.osdn.jp

こういうことは時々あるみたいです。

itojisan.xyz

6: ArcLocomotion.unitypackageをUnityにインポートしてブログ記事通りに実装

そのままドラッグアンドドロップするだけでした。

  • つまづきポイント:特になし

7: ビルド

  • つまづきポイント:特になし。

8: 完成

これでステージづくりに進めますね^^

xrdevjaゲーム共同開発プロジェクト議事録 日時:2019年2月5日

議事録本編
xrdevjaゲーム共同開発プロジェクト議事録
日時:2019年2月5日

参加者さん:
kannonjiさん
kuroさん
keiさん
torikasyuさん
mawa

・進捗報告
(mawa)Voxelの初歩的なモデリング→Unityへの取り込みができるようになりました
(keiさん)blender進捗中。

■確認項目 ・23日にリアルミーティングをする前に、各自できるところまででOKで、1面つくってみる。 ・2月23日の14時に新宿(場所未定)で、リアル開発ミーティング& もくもく会をすることになったので、各人ご都合合えば是非^^

・Oculus Go 移動コントローラーは公式のものを使ってみる ・OculusGoでテレポート機能をインポートするためには OculusGo 2018.3.3f1以上のバージョンが必要

https://developer.oculus.com/blog/teleport-curves-with-the-gear-vr-controller/ https://developer.oculus.com/blog/-avatar-locomotion-sample/ https://qiita.com/noitak/items/c7283d912a723e8c27fd

・UnityHub使うと便利。

VRミーティングしたい
・Oculus Rooms 何人までいけるか? 4人(2018年5月確認記事による) ・次回Mtg OculusRoom できるなら

https://www.moguravr.com/oculus-rooms/

・BigScreenというものもあるらしいです knowledge.sakura.ad.jp

clusterでの報告
・cluser、モバイルアプリだとtwitterでログイン失敗する
・Webでログインしておいたら成功しました

VirtualVirtualRealityのゲーム構造の報告

参考URL1


VIRTUAL REALITY INCEPTION! | Virtual Virtual Reality (Oculus Go Gameplay)

参考URL2 www.youtube.com

Virtual Virtual Realityをやってみた

VRゲームでは有名らしいです。 ついにやってみました。その感想など書いておきます。 VRゲーム開発のお役に立てばと^^

どんなゲームか詳細に書くのでネタバレ注意です。

環境面での気づき

・プレイ環境はOculusGo

・OculusGoでプレイして1度も落ちなかった!

・アプリ落ちがなかった原因のひとつと思われるのが、オブジェクトのデータは極限まで簡素化してあるように思いました。リアルな描写は捨てられ、Unity基本3Dオブジェクトをちょっと手を加えたようなオブジェクトを色合いやライトのあて具合などで雰囲気をうまく出すところに注力されているように思いました。

・多言語翻訳対応実装:日本語の字幕のような感じの設定がなされる

・自動でセーブしてくれるとのことです(kurosanご指摘ありがとうございますm( )m)

・移動はテレポートタイプ:それでもちょっと酔ってしまう。これはしょうがなさそう。

ゲームのシーンの構造

1:チュートリアル的ステージ

f:id:k_mawa:20190204174741p:plain 引用元:VIRTUAL REALITY INCEPTION! | Virtual Virtual Reality (Oculus Go Gameplay) - YouTube

AI上司が登場。AI上司から、プレイヤーは人間リソース派遣会社のスタッフ(リソース)という設定と聞かされる。

AI上司にゴーグルを渡され、ゴーグルごとの世界のオーナーである無機物(主が、バターの世界、草(タンブルウィード。西部劇の風でからから回転する草)の世界、風車の世界そのほかもあるかも・・・)のリクエストに応える。うまく応えられないときはAI上司シーンに引き戻され、主からレビューがつく。たぶん悪いレビューがつくように設定されてるっぽい。悪いレビューによってAI上司がプレイヤーにキレてくる(結構リアルでちょっとウツな気分になります苦笑)

各シーンのクエスト内容は以下のとおり

バターが主のステージ

f:id:k_mawa:20190204175247p:plain 引用元:VIRTUAL REALITY INCEPTION! | Virtual Virtual Reality (Oculus Go Gameplay) - YouTube

・キッチンルーム風のステージ。巨大なしゃべるバターがキッチンの正面に配置されている。
・キッチンの周囲にはパンが入った大量の稼働中のトースターがある。きつね色になったパンをバターに貼り付ければ貼り付けるほどミッション成功。焦げたパン、焼けていないパンをバターに貼り付けると減点(のような感じ。明確なルール説明はなし。)

一定時間(3分くらい?)経つとAI上司のいる仕事待機室シーンに引き戻される

レビューが悪いとAI上司に怒られる

枯れ草が主のステージ

f:id:k_mawa:20190204175231p:plain 引用:VIRTUAL Virtual Reality - HTC Vive Gameplay (Part 1 of 2) - YouTube

・西部劇風ステージ。木でできたキャタピター(ルームランナーぽい機構)の上に草(タンブルウィード)が乗っていてしゃべってくる。風を送る装置を使って、キャタピターを回すことで草を永遠に回転できるようにするのがミッション。

一定時間(3分くらい?)経つとAI上司のいる仕事待機室シーンに引き戻される

レビューが悪いとAI上司に怒られる

風車が主のステージ

f:id:k_mawa:20190204175154p:plain 引用元:VIRTUAL REALITY INCEPTION! | Virtual Virtual Reality (Oculus Go Gameplay) - YouTube

・栽培する温室風のステージ。風車がしゃべりかけてくる。花壇に水をやるのが最初のミッション。花壇に育った歌う花を指定の場所に設置するのが2段階目のミッション。

設置中に割ってしまった(割れないで成功するミッションもあるのかもしれない)

風車がクレームしてくる

AI上司のいる仕事待機室シーンに引き戻される

レビューが悪いとAI上司に怒られる

2:脱出ステージへの移動シーン

3つミッションを終えた後で画面が突然暗くなり、別の次元に転送されたような状態になる。声が聞こえてきて「AI上司に服従する人生をやめて人間コミュニティに来たらいい」というメッセージと「そのためにコントローラーに武器を仕込んだ」というメッセージをもらう。武器は、OculusGoコントローラーを左右にスワイプすると武器モードになり、ゲームオブジェクトを吸い取ると、吐き出す(生成?)の2つのパターンがある。AI上司シーンで使うと「バレたら危ない!」と声が聞こえて武器は起動しない設定。

AI上司シーンに引き戻される。AI上司から「いまノイズがあった。もしプレイヤーがこのバイト機構を抜け出すと大変なことになる。」と警告。

バターからのバイト依頼があり、ゴーグルをつけバターステージに移動。(脱出スタートシーンと定義

バターステージで、武器を使うと、キッチン風ステージが張りぼてのように武器コントローラーに吸い込まれ、脱出用ステージが現れる。

3:脱出ステージ1

f:id:k_mawa:20190204174918p:plain 引用:VIRTUAL Virtual Reality - HTC Vive Gameplay (Part 1 of 2) - YouTube

暗い工場風ステージ。そんなに広くない。20分で探索可能な程度。散策すると、ゴーグルが6つ落ちていることに気づく。どのゴーグルも同じシーンへ移動する(たぶん。)

・敵キャラ登場。ゴーグルが鳥の群れのように飛び交っていて、ゴーグルに触れるとAI上司シーンに戻され説教される。脱出スタートシーンから再スタート。

4:脱出ステージ2

f:id:k_mawa:20190204175045p:plain 引用:VIRTUAL Virtual Reality - HTC Vive Gameplay (Part 1 of 2) - YouTube

エレベーターがあり、B1~3Fまで4階層になっている。

B1金庫室、ひとつ色の違う金庫があり怪しい
1Fエレベーターに乗れる階
2F AIが卓球している。降りると、攻撃され、脱出スタートシーンに戻される
3Fゴーグルの群れがゆらゆらうごめいているところに鍵オブジェクトが浮遊している。

謎解き→3Fで鍵をとって、B1の怪しい色付き金庫に持っていくと金庫があいてゴーグルが1個でてくる。ゴーグルをつけると次のステージへ移動。

感想:謎解き簡単だが、VRで操作という要素が入ると割と苦労した。

5:脱出ステージ3  

f:id:k_mawa:20190204175034p:plain 引用:VIRTUAL Virtual Reality - HTC Vive Gameplay (Part 1 of 2) - YouTube

暗い廃墟の工場兼オフィスのようなインテリア。ノブつきの発電パネルみたいなものが4つあり、ノブを3方向に定義できる。この34通りのパターンに反応するパネルがあり、近隣の大きなボタンを押すとパネルアイコンに沿ったオブジェクトが現れる。正解オブジェクトをつけると、次のステージに行く。

メモ:ここまで3時間くらいかかっている。

6:未プレイ

探索中。

報告は以上です。参考になればと思います^^

xrdevjaゲーム共同開発プロジェクト議事録 日時:2019年1月22日

議事録本編
xrdevjaゲーム共同開発プロジェクト議事録
日時:2019年1月22日

参加さん:
kannonjiさん
kuroさん   keiさん
torikasyuさん mawa

■進捗(概要)

・シナリオ、や世界観はkurosanリーダーで創造していただく ・↑の世界観を反映した謎解きを各メンバーで提案→実装 ・重要コンセプトはアバターの切り替えで一人複数役割をこなしながら謎解き
・keiさんがBlenderにチャレンジする ・mawaがVoxelチャレンジする

■提案されたゲーム案

kuroさんのゲームアイデアのバックアップ190122 - xR Deveropers Japan Blog

keiさんのゲームアイデアのバックアップ190122 - xR Deveropers Japan Blog

mawaのゲームアイデアのバックアップ190122 - xR Deveropers Japan Blog

=>kuroさんをコンセプト・世界観のリーダーとして、今後ゲーム開発のときのアイデアストックとして活用。

■話し合い中に出てきた参考にしたいゲーム/コンテンツ

・Vitual Virtual Reality
Portal
www.youtube.com

・Welcome to Virtual Reality

■話し合い中に出てきたゲームの演出要素

・ボクセルでモデリングをやるなら、「タイムジャンプ型通信技術は通信量制限がネックになるので、通信量削減のために世界はすべてボクセル形式に変換されて通信されます」、という設定で自然な感じで楽しめるかも(kuroさん)
・外側から箱庭みたいに中が見える

■経緯

・2人でやる謎解きが思いつけるか?
・2人で遊ぶ環境のデバッグが大変では(2台オキュラスGoいる)

=>とりあえず1人でも遊べるゲームもありでは、という流れに。

■宿題・次回予定など
次回29日火曜日21時~  

・1週間でチャレンジしたことの進捗報告
・kuroさんから提示された世界観の共有とアイデア出しなど議論

途中参加も歓迎です。

以上

開発ミーティングは、不定期ですが、1、2週間に1度、Discordで行っています。該当Discordは下記になります。 お気軽に参加ください^^ https://discord.gg/r9TzPmx

xR Developers Japanはスラックもあります。 ご関心あれば下記の記事下部のフォームから参加いただけます。 https://goo.gl/forms/gwUzHQuL1x1ulA0c2

mawaのゲームアイデアのバックアップ190122

①簡単なゲームのストーリー案

(○○という世界で、■■がこういう理由で冒険する物語 3行くらい?)世界観

謎の惑星に不時着した人間が、 生き残って地球からの救助をまつ物語

バイオスフィア2 という実験 + 地球外惑星がイメージに近いです。 https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%82%AA%E3%82%B9%E3%83%95%E3%82%A3%E3%82%A22

②仮のタイトル

Planet X

③ジャンル(kannnonjiさんの投稿を参考に)

・シミュレーション要素を入れたい(食べ物を栽培するルーティン等) ・プレイヤー1はサバイバルする ・プレイヤー2は地球か近隣惑星の基地局から交信する ・もしくはプレイヤー1と2が協力プレイでサバイバルも面白そう

④ゲーム概要(kannnonjiさんの投稿ふんわりしている考え部分)

不時着した惑星 いろんな地形がある。 地球ではみない生態系。なかには奇抜な生態系もある。

ソコトラ島とか https://www.compathy.net/magazine/2015/09/24/dragon-blood-tree/

イエローストーンとか http://park.looktour.net/national-park-guide/%E3%82%A4%E3%82%A8%E3%83%AD%E3%83%BC%E3%82%B9%E3%83%88%E3%83%BC%E3%83%B3%E5%9B%BD%E7%AB%8B%E5%85%AC%E5%9C%92%E3%81%AE%E8%A6%8B%E3%81%A9%E3%81%93%E3%82%8D%E3%83%BB%E6%A5%BD%E3%81%97%E3%81%BF%E6%96%B9/

あとは月が3つあるとか面白そう。

⑤盛り込みたい要素など(kannnonjiさんの投稿  もっとふんわりしてる考えというか、盛り込みたい演出ネタ)

サバイバルの過程をリアリティを持たせたい 例えば この謎の生物はたんぱく質を摂取できる!というのをヒントを頼りに気づけるとか。

ベア・グリルスという人のサバイバルコンテンツとか参考になりそう (私がベア・グリルスファンというのもあり。) https://matome.naver.jp/odai/2141953243519337001

主人公に「ベア・グリルスがやってたのを見た」みたいなセリフとかも一部ではウケそう。