unity1week参加振り返り

ゲームジャムなるものに参加してみたふりかえりをまとめ。主に自分用のメモ。嘘書いてるかも。



# Unity一週間ゲームジャムとは

https://unityroom.com/unity1weeks/56

- 一週間でゲームをつくってunityroomさんに投稿する。
- 今回は「ためる」というテーマで募集とのこと。
- 期限内に投稿し、期限終了で投稿作品が公開される。遅刻も可能らしい。
- 投稿者同士でレビューさせあう仕組みが設計されている
    - 自分のゲームの感想がほしい心理ついてるなぁと思った
    - 故にあまり辛辣なコメント書きにくいだろうなぁとも思う
- unityroomさんのプラットフォームを利用するので、公開の手間は圧倒的に楽。


# 経緯
- ゲームをつくってみたいと思い立ちUnityをはじめてみた
- Udemyでとりあえず１コースを履修してできる気になってみた
- インディーズの調査をしていて、目に留まったゲームジャムに参加してみることにした
- ポッドキャストの「ゲームなんとか」さん内で、ゲームを作る話が出た辺りからずっとむずむずしていた。


# できたもの

https://unityroom.com/games/nyatonclicker

- 「ためる」ということでクッキークリッカー風にしてみた
- リンゴを落とす、売る、アップグレードを買う、という流れのゲーム。


# 振り返り

## 準備段階

開催前に、自分が使いそうなUnityの機能をまとめてテンプレートを作っておいた。と思っていた。一週間後に見ると何も入っていないなと思う。一週間前はこれができることのすべてだったんだなぁ。。。

https://github.com/lololo-git/unity-WebGL2D-Template

## 企画
- 「ためる」というテーマに対して拡大再生産ゲームをつくることにした
- 公開前は1日目にしっかり企画を考え、4日で実装して、あと調整とか考えていた。
- 結果、ほぼ全般、つくりながら考えていたきがする。
- リポジトリ名がJuiceFactoryになっているあたり、リンゴを加工するつもりだった気がする。
    - 加工するために一時保存して、加工するエリアを作ってとやっていたが、実装終わらない気がしてシンプルにリンゴを生で売ることにした。
    - そのため一時保存の機能だけのこってしまった
    - この1クッション要る？とも最終日２日前に思ったが引き返せず


## デザイン

こんなレベル
![icon2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2843037/8ec42f46-df4f-c839-b506-c1110f3013bf.png)


- unityの習得を目的としているので今回デザインはいったん捨てようと決めた。
- といいながらも「ちょっとは盛って評価されたいしー」 みたいな承認欲求が中途半端に染み出していて、大変恥ずかしい。
    - デザインを私がしないとして、利用できるものはないかとAssetStoreを見渡し、1つ2つ買ったりもしたが、結局使わず。
    - 買ったSpriteで7割はまかなえる状態にはなる
        - じゃあ3割は自前でなんとかしなきゃいけない
        - 7割(売り物)と3割(手抜きの自前)のクオリティの違いが気持ち悪すぎる
        - じゃあ3割部分ののクオリティを上げるかというと、そんな時間はない。
        - 結果7割を捨てて、10割自前のロークオリティで対応することに。どーなん。
- ロークオリティだし荒いドット絵でいこーと思っていたが、取り回しに苦労
    - ドット絵は拡大縮小ができないので、それが必要なら全て描きなおし
    - とりあえず16x16dotで絵を描いたものを拡大して配置する方法で落ち着いた
        - 16*16ってもうイラストロジックの超初級のページやんと思った
- 某ポッドキャストの影響で「Voxelもいいかなー」と思ったがStoreにはまだまだ少ない。
    - 耳で聞いていたので最初"Boxel"だと思ってた。検索してもStoreになくて「まだ早いカナー」とかしばらくほざいてた

## コーディング
- C#の書き方にまだ慣れてない。嘘。知識が足りてない。
    - わけもわからず宣言時に "= default"って書いてた。
        - [defaultリテラル](http://ichitcltk.hustle.ne.jp/gudon2/index.php?pageType=file&id=CS_default.md)
        - コンストラクタ名が長いとき省略できるのは理解。でもこれSerializeFieldにつける意味あるのかな。
    - 「varは使わず明示的な宣言をー」とか昔聞きかじった知識でvar避けてた
        - https://qiita.com/4_mio_11/items/db9584ae47dbc55374e7 勉強になりました
    - SerializeFieldを理解しておらずpublicのObjectと混在している
        - とりあえずSerializeFieldつかえば自分には良さそう。
- 一人で一週間開発にカプセル化要る？と脳裏をよぎったりもした。が踏みとどまる。
- 「コンポーネント指向」がまだ体現できていない気がする。
    - enumとかどのクラスで持たせるのが良いのかーで悩んだりする。
- Windowsだったので改行コードをCRLFからLFに自動で直す方法を模索してた
    - 最終的に.editorconfigを使ったが、なんかVisualStudioで効かないときがあるような？
    - そもそも一人だし。最初から割り切って良かったのでは。
    - あまり記事も見かけなかった(気がする)のだけど、今は気にしないでよくなった、のか？
- ゲーム後のランキング機能を入れるか最後まで迷って、提出数時間前に結局手を出した。
    - [naichi's lab](https://blog.naichilab.com/entry/webgl-simple-ranking) さんのpackageに感謝
- フォルダ構成がまだしっくり来てない。流派とかあるのか
    - うっかりpackageをimportしたら既存のフォルダと被ってしまってあーってなった。
    - 外部からimportしたものはLibsとか作ってpackageごとにまとめていれるべきと思っていたがそんなことない？

## Unityに関して

- ゲームの開発しやすさはんぱない。すご。すこ。
- GameObjectとComponentの関係が1週間で理解できた（できずにやってた）
- Prefab化を無駄にしているところがある。
- SortOrderの設計が甘くて終盤に、重なりがうまく調整できずあーってなった。
    - GameObject追加するときにちゃんと意識してやったほうがよさそう。

## 全体を通して
- **げーむかいはつちょうたのしい**
- 企画しながら開発しているので手戻りも多かった
    - 機能作ったけど、遊んでみて微妙なので消した機能もちらほら
    - 仕事の現場でこんなことあったら発狂すると思う
    - でも一人だとなんかそれも楽しい
- 開発物が固まっていない状態で開発するので、ブランチがうまく分けられないしコミット混ざる
    - 機能を書いてる途中でリファクタリング的な修正いれてしまったり。
    - PullRequestレビューでこんなやついたら発狂す
    - 自分のtypo見つけてもすぐには直せない仕事と違って、すごい解放感（だめなんだけど）
- とりあえず2Dゲームの作り方に関しては、「完全に理解した」
    - https://twitter.com/ito_yusaku/status/1042604780718157824

## 今後の開発に向けて
- いろいろな人がどうやっているのか知りたいが、知り合いがいなさすぎるぼっち。
    - 勉強会とか？そろそろ行ってみても？許される？かもしれない？
    - どこかのチームで修行させてもらいたい気もする。人見知りにはハードルがある。
- 1weekでないのなら企画はしっかり詰めてから開発すること
    - ある程度素材も用意して完成イメージをもってからやる
    - ただ1weekでないにしろ期限は決めておかないと、永遠と作りこんでしまう予感がする
- デザインを今後も自分でやるのは正しくない気がしているがどうしたもんか
    - 自分の才能の無さは理解している
    - AssetStoreで本当になんとかなるのだろうか。
        - 7割3割問題って結局みんなどうしてるんだろう。
    - Steamのレビューで「RPGツクール系で何度もみた絵」というフレーズを見て、そういうこともあるよなと思った。
- デザインはともかくGUIの勉強に、本を一冊読もうと思った。
- あとノリでバランス調整とかしてたけど、ゲーム理論とか本があった気がする。

# まとめ

- **げーむかいはつちょうたのしい**
- 楽しそうだなと小さいころから思ってたけど、やってみたらやっぱり楽しかった。