神は人々の命を落とさない

https://github.com/kdix-23-240/The_Life

GitHub

C#

Unity

VSCode

誰も命を落とさない、幸せな世界を創造しましょう

カシュー

推しアイデア

命は大事、落としてはいけない。だったら、命を落とさない(物理)ようにしよう!! 飛んでくるボールは今回ハッカソンに参加した方々の命です。ぜっっっっっっっっっっっっっっったいに落とさないように丁寧に扱いましょう。

作った背景

命は大事だから

推し技術

設計、みんな、設計をしよう。

プロジェクト詳細

神は人々の命を落とさない

前置き

今回のハッカソンは二人で参加する予定でしたが、相方が現地開発の前日に高熱を出してしまったので、急遽ソロ参戦することになりました。そのため、元のプロジェクトやアイデアはボツとなり、自分一人でできることをやるしかないという感じでした。まじ大変!!当日会場入りしてからプロジェクトやリポジトリを作成した感じです。 色々ありましたが、24時間ワンオペノープランハッカソンの開幕です!!

ゲームの話

私はゲームをメインにプログラミングや設計を学んでいて、いつもUnityばかりを使っているので今回のハッカソンも当然の如くUnityのみで作成しました。超簡単なピンボールゲーム(?)ですunityroomにて配信しているので、ぜひ遊んでみてください。 https://unityroom.com/games/the-life

ハッカソンに対する思い

ハッカソンでは短い期間で成果物を作る必要があるため、設計がとても疎かにされてしまいます(自分調べ)。ですので今回は、アンチハッカソンということで設計をとても意識しながらゲームを作成しました。とても簡単なゲームだけどめっちゃ丁寧に設計をしたので、これからそれについて全て話していきたいと思います。

まじでこの設計を見てくれ!!!!

まずは簡単にクラス図を作成したのでそれを載せます

image

今回はMVPアーキテクチャを使えるところは全て使い、UniRxと一緒にとても疎結合なクラス構造を実現することができました。また、StrategyパターンやSingletonパターンといったまるで設計できるやつっぽいことをしてみたり、本当に無意味なObjectPoolなんかも使ってます。 また、上記のようにすることでものすごい疎結合が実現し、Unityならではのコンポーネント指向を最大限、、、とは言わないまでも、かなりいい感じに扱うことができました。ちょっとしたこだわりとして、今回はPC専用ゲームを作る気だったので、もちろんキーボード入力が当たり前だと思いますが、もしかしてもしかしたら、今後ゲームコントローラーや別のハードウェアからの入力をすることを妄想し、コントローラーの入力すらも責任を分けちゃいました。 こんな小さなゲームにここまで設計をする意味は全くないのですが、自分の実力がどれくらいのものなのかを知りたくて、やっちゃったって感じです。

SOLID原則とStrategyパターンがめっちゃうまくいった話

クラス図を見てもらえればわかると思いますが、とてもクラスの数が多いです、ゲームスケールの割に。その分、クラスの責任が分けられていると言えるでしょう。また、オープン・クローズド原則や依存性逆転、Strategyパターンを使ってうまくリファクタリングできた図1の一番右の赤い四角あたりはとても満足しています。めっちゃ気持ちよかった。

この設計がわからない人へ

わかりやすく言うと、今後超大型アップデートがあってもなんとかなるように作ってるよ!!(別にそんなことをするようなおもしろいゲームじゃないのにねっ!!)ってことです。。。笑ってください。。。。。

最後に

今回のハッカソンはなぜか急遽、24時間ワンオペノープランハッカソンをすることになり、何もできることがないならやりたいことをやればいいじゃないの精神で取り組みました。今回がたまたまいい感じにハマっただけかもしれませんが、とても満足できる良い設計ができたので大大大満足です。思ってたより自分が成長していたことも実感できて良かった!! 最後まで読んでいただき、ありがとうございました。現在2日目朝10時で残り3、4時間の開発時間があるそうですが、さっさと寝たいと思います。ありがとうございました。おやすみなさい。

カシュー

@game_game_nuts