Unity 1週間ゲームジャムに参加しました(お題 : 夏)
遅れて報告となりますが,1週間ゲームジャムに参加しました。こんなの。
今回は参加できそうー。こんなの。きのじゆうけんきゅう #unity1week pic.twitter.com/ucTlHsC2cj
— ののか (@79onoka) 2017年7月30日
木が育つのを観察するゆるいゲームです。木の自由研究
目次
メイキング
ざっと考えたことを振り返ろうと思います。
テーマ決め
お題が「夏」と知った時,まず頭に思い浮かんだのが夏休みでした。 夏休みがあるのは生徒、学生あたりかなーって思い、そこら辺がやりそうなものにまず絞りました。
また、ちょうどL-systemという単語を知る機会があり、調べてみたら木が作れるアルゴリズムのようで興味が湧いてきました。 ちょっと作ってみたい...
なので、今回は木を成長させることをテーマにしようと決めました。ただ、このままでは夏と全然関係ないので、小学生の夏休みの自由研究という設定を付け加えることにしました。
多分セーフ...
木の成長
まずは情報収取。いろいろ調べてみると、@sylvan5さんの記事を見つけました。 aidiary.hatenablog.com
この記事を参考に早速取りかかって実行した結果...
木じゃなくて草のように見える...でも狙い通りの結果が出て来てくれてうれしい。あとは置換規則をいじって3次元に対応すればよさそう!
ここで今後のプランを考える。上の画像は置換規則は F → F[+F]F[-F]F (+と-は角度変更)だから...n回繰り返すと枝の数が5のn乗になるのか。 枝の本数が指数関数的に増加するとなると、仮に10回成長させた場合は枝の数が膨大だなぁ...うーん...
ということで、ここでL-systemを使うのは断念しました。とりあえずやりたい事を以下の3つに整理して、どうすればいいか考えました。
- 木が3次元で成長
- 枝が伸びるアニメーション
- 枝の半径や長さ、角度をいじれる
最終的に、下の画像のようにトップ階層にNodeという空のオブジェクトを用意して、その下の階層にBranchという枝のモデルを用意しました。最後にBranchの下の階層にTipという枝の先端を示す空のオブジェクトを用意しました。シーン上の緑のアイコンがTipの位置です。アニメーションを考慮して枝のモデルの重心は中心ではなく,付け根、Tipと真逆の位置にしました。 この構成にして,枝の位置はNodeが管理,枝の見た目(大きさや角度)はBranchのScaleをいじるようにしました。
上記のオブジェクトをプレハブ化しておき、木を成長させる際は新しい枝のNodeの位置を先端の枝のTipの位置に配置することでそれっぽく繋がってるように見せました。最終的にはこんな感じになります。
ゲーム要素
メインのシステムは出来たのであとはゲームに組み込む作業。水・土・日光の3要素よって木の成長具合が変わるようにし、プレイヤーはそれらの要素に関与できる感じに。
また、天候よって各要素の増減量が変化するようにしました。
その他
スコアの指標的なものが欲しかったので,以下のサイトを参考にNCMBのライブラリを拝借。パパッと実装出来て感謝感謝です。ゲーム内部では、スコアと高さ、葉っぱの数を保存するようにしました。 blog.mb.cloud.nifty.com
背景は何も思い浮かばなかったので適当にグラデーションかけました。もっと夏要素欲しいので改善の余地ありですね...
カメラワークは常に木が収まることを意識しました。Unityの公式チュートリアルを参考にしました。
感想
とりあえず、参加できてよかったーって感じです。また、このように行ったことをメモ出来たのでなおグット。ローカルではやる気出なかったので...
技術的な事でいえば、L-systemについてちょっと触れられたのが割と良さげでした。結局ゲームには採用しなかったけど...まぁ引き出しが一つ増えたのでよきかな。 あと、要素を実装する際に継承を使って設計できたのがうれしい。テンプレートメソッドって言えるのか分からないけどそんな感じかな...? ただ親クラスを用意したことの利点を上手く使えなかったのでそれは今後の課題。まだまだ反省する点は多々あるけど、経験積むしかないな~って感じ。そういう意味でこのようなゲームを作る機会を用意して下さるnaichiさんには感謝感謝です。
個人的に好きなげーむ
勉強になったり面白いゲームが沢山ありますが、個人的に好きなのをピックアップ。
雰囲気が好き。弾が花火なのでプレイ画面もきれい!自機のスキル強化も楽しい。文字が光って見える演出どうやってるんだろう...
雰囲気が好き。線香花火見るのが手軽に体験出来て好き。落ちた後、クリックするとスコアが追加される...
キャラのドット絵表現が好き。シンプルにバレーできて楽しい!ロジックがとっても勉強になった。