投稿記事

Unity3Dの記事 (2)

PhotonSystem 2023/06/13 00:05

UnityとSourcetreeを使ったGitHub連携の覚書

そろそろ新作のプロジェクトも肥大化してきたし
簡単に差分やバックアップを取りたいなと思って重い腰をあげて
GitHub連携を調べて自分用にまとめてました
なお誤操作でプロジェクトが消失してしまい
ほとんどゲーム制作が振り出しに戻った模様


①アカウントの連携

SourceTreeを導入して
 ツール>オプション>認証>アカウント>追加
からGitHubのアカウントと連携する

追加画面はGitHubがログイン状態だとOAuthで簡単に連携できる

②Unity側の設定

ProjectSettingのEditor>VersionControlをVisibleMetaFiles
ProjectSettingのEditor>AssetSerializationのModeをForceText
に変更する(おそらく最初からなってる)

③ローカルリポジトリを作成する

SourceTreeの上部にある+からリポジトリの作成をする


設定画面では
 保存先のパス:Unityのプロジェクトがあるフォルダ
 名前:わかりやすいプロジェクト名
の二点のみ変更する

④GitIgnoreを設定する

SourceTreeの右上の設定からリポジトリの設定をする


詳細>リポジトリの固有の無視リストを編集して
下記の配布されているGitIgnoreに書き換えることで
余計なファイルデータを保存しなくできる
https://github.com/github/gitignore/blob/main/Unity.gitignore

⑤Git LFSの設定をする

GitLFSを設定することで100MBを超えるファイルを受け付けられるようにする

SourceTreeの
リボジトリ>GitLFS>リポジトリの初期化
その後に
リボジトリ>GitLFS>追跡/未追跡のファイル
を選び適当に入力すると「.gitattributes」が生成されるので
このファイルも配布されているファイルに書き換えることで
詳細な設定をすることができる
https://gist.github.com/nemotoo/b8a1c3a0f1225bb9231979f389fd4f3f

⑥リモートリポジトリの連携をする

GitHubの右上+からNew Repositoryを選択する


RepositoryNameには好きなプロジェクト名を入力し非公開がいいなら
Privateにチェックをいれる

その後にURLが生成されるのでそれをコピーする(今回はHTTPS)
例「https://github.com/???/???.git」


次にSourceTreeの上部にある+からリポジトリの設定>追加をする
リモートの詳細設定を開き
先ほど入手したURLを入力する


リモート名は好きな名前でいいが今回はOriginとする

⑦GitHubにプッシュする

SourceTreeにて
上側メニューからプッシュを選び
「Master」を選んでプッシュをする

GitHubの右上+からYour Repositoryを選択する

ファイルがGitHub上に反映される


その後GitHub上にあるのはOrigin/Masterと表示される
(⑥で設定した名前が表示される)

その他

・複数人でバージョン管理をする場合はGit Flowを導入するといいらしい
・プッシュする際にファイルのサイズが大きいとエラーが出る
 エラーが出る場合はSourceTreeの上部にあるターミナルから
 「git config --global http.postBuffer 524288000」と入力してから再起動
ローカルリポジトリを削除する時にブックマークではなく「リポジトリを消す」を選ぶとファイルが消失する(プロジェクトが大きいとゴミ箱にも入らず消える)

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

PhotonSystem 2023/03/10 19:22

開発雑記まとめ

NonetEnsemble魔法仕掛けの迷宮のSwitch版をリリースと並行して
こそこそ裏で開発している次回作である「アクションゲームB(仮称)」の開発状況のまとめ
(Twitterで呟いたものが中心)

2020年夏頃


前々々作の主人公であるソウちゃんです
魔法仕掛けの迷宮では頭身の低いキャラを使用していて
Blenderで使用できるアクションに向いたキャラクターがいないので
過去作のキャラクターを練習がてらリモデリングしました

この子はもう登場出番はないので正規のキャラクターができるまでの代理です



地面がグラデーションで構成されるのは
比較的簡単な処理でゲームでよく使用されるのですが
トゥーン調のゲームに合わないのでオリジナルのシェーダーを書いてました

風のタ●トみたいなトゥーンに憧れましたが
シェーダーでなんとかするにはちょっと技術不足だったのでお蔵入りです


2020年秋頃


近年の流行りを取り入れようとしてサンドボックス要素を取り入れようと思い
試行錯誤している段階です
(サンドボックスとは簡単に言うとMine●raftみたいなブロックで構成されたゲーム)

ステージをモデリングするより楽と見せかけて
自動生成系はかなりプログラムのハードルが高いです
魔法仕掛けの迷宮のダンジョン生成で辛さを学んだはずなのにどうして…?!


2022年夏頃


そして時は飛んで2年…!何があった!?
Switchへの移植作業で時空が歪んでる
地形生成プログラムがすさまじくカオスだったので書き直したりして
16×16マスをチャンクとして管理することでより多く表示ができるようになった
(なお1マス=1mとする)
ちなみにこの時点では1チャンクを生成するのに2秒かかっていた
仮に128㎡を生成しようとすると72秒かかる計算になる
これではゲームにならない


テクスチャについてはTriPlanar Texture Mappingという技術を使用して
どの方向から見ても綺麗にテクスチャがはれるマッピングを導入した
話すと長くなるので興味があったらググってみてほしい


ブロックに種類を設けて、種類によってテクスチャがかわるテストをした
テクスチャがかわる仕組みについては
いわゆるブレンドテクスチャと呼ばれる手法を用いている
この方法の問題点は4種類しかテクスチャを混ぜれないことだ
ゲームによっては数多くのテクスチャを混ぜているがどうやってるのだろうか…?
わかる人はコメントで教えてほしい!

2022年秋頃


地形だけだと建造物が表現できないのでブロックも表現できるようにした
地形と比べるとわりかし簡単だった

2023年現在


本来ならばフィールドの広さは512㎡ほしいが
とりあえず最低限である128㎡で開発を進める

頂点を結合したほうが早そうだが結合する処理がめちゃくちゃ重たいので見送った
これによって大体1チャンクあたり0.04秒あたりの処理となった
128㎡の場合は約2.5秒しかかからないことになる
しかし目標である512㎡の場合は16倍である40秒かかることになる
まだまだ課題は多い…


次に導入したのはLODとよばれる遠くのオブジェクトを簡略化して表示する処理
(それについでにフォグも導入した)

ボタンひとつでポチーとなるほど簡単な処理ではなく
自動生成したメッシュでLODを作成する資料が少なくてだいぶ苦労した

これによって読み込みが高速化することはないが(むしろ遅くなる)
普段の処理が大きく軽減されるので広いフィールドを表現するには欠かせない処理である

ただ現段階では欠点があり地形に利用する場合は
距離によって隙間が空いてしまう現象が起きるのでなんらかのケアが必要なこと


いい加減でこぼこした地形にはうんざりしたので
パーリンノイズと呼ばれるノイズを使って自然な地形を作るテストをしてみた
本来はパーリンノイズには難しい計算が必要なのだが
そこはUnityなので難しい計算は全部お任せした

ただ純粋に使用しただけではMine●raftのようなワクワクする地形はできず
改めてMine●raftのすごさを実感する


地表部部分を草、中間を土、下層を石と設定したが
地表からは99%が草というつまらない景色になる問題を抱えている


テクスチャの問題もあるが地表が少々寂しいので草を生やしてみた

今まで触ったことがなかったがジオメトリシェーダーというの利用している
簡単に言うと頂点の位置を無理矢理書き換えたりする処理だ
サンプルのプログラムでは1ポリゴン当たり1つの草しか生えないので
けっこう気持ち悪いことになっている


地面のテクスチャが明るすぎると指摘されたのでテクスチャを差し替え
ジオメトリーシェーダーを改良して任意の本数の草を生やせるようになった
実際はこんなに複雑な地形でプレイヤーが遊ぶことはないが
横向きに生えている草に違和感を感じる


この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索