Game A Week 振り返り (2024.10.13〆 モンスターのおいしゃさん)
毎週ゲームを製作する、Game A Weekを始めました!
↓Game A Weekとは何ぞや
作ったやつ
今回の狙い
まず前提として今回のお題は「なおす」だったので、それに沿ったゲームを作ることにしました。
そのうえで、参加表明したのが週の中頃だったため、短い期間で完成させられそうなゲームであることも条件に入りました。
そして自分の中の最近の課題として、プログラミングパワーを上げたい(これを上げなければ、ゲームデザインの試行錯誤のサイクルがそもそも回せないため)というのがあり、座学が終わったところだったので、SOLID原則に基づいてコードを書くことも重視しました。
座学はこの辺りを使って行いました。
・Adaptive Code ~ C#実践開発手法
・Level up your code with design patterns and SOLID
ゲームの企画
まず「なおす」というお題に対して、ざっと5つネタ出ししました。
その時のメモがこちら:
・悪いところをなおす
モンスターの触診と修正
悪いところを言われるので、会話か、ものを取ってきてなおす
・人間関係をなおす
こじれた人間関係を、パズルのようにくっつけて、なおしていく
・こわれたものをなおす
パズルゲームのような感じ
・引っ越したあとに家具の配置をなおす
より効率的な位置に置けたら勝ち
平日 おきる→あさごはん→はみがき→きがえる→せんたく→でかける→かえる→よるごはん→… 休日はまた違う
平日でもテレビみたりする曜日がある
・恐竜の化石をなおす
今回は前提として、実装に時間をかけない、シンプルなものにする必要があったので、会話+簡単な選択だけで終わりそうな「モンスターの触診」案で行くことを決めました。
どう面白さを出すかですが…。システムが面白いゲームではないので、テキストや絵で面白さを出していく必要があります。
モンスターたちの言動や悩みが、現実世界の我々と似通ったものであることで、意外性のある共感が得られ、面白さが生まれることを期待し、そのようなシナリオを入れることにしました。
この辺は「救国のスネジンカ」とか、最近読んだ「わたしを離さないで」とかから着想を得てます。
振り返り
ゲーム全体
とりあえずENDまでは実装できたので良かったです。
難易度が適切だったかは現状わからないですが、テキスト見返し機能は入れたかったな…。
テキスト周りは、当初の予定だった「モンスターたちの言動や悩みが、現実世界の我々と似通ったものである」というのは入れたつもりだが、いわゆるJRPG感を意識した内容にもなっており、コンセプトがどっちつかずになってしまったかも。
そして全体的にテキストの質は低いが、今回は許容!
プログラミング
SOLID原則がどれくらいできてたかを振り返ると…。
・単一責任の原則
あんまりできてない。
テキスト出す→アイテムダイアログ出す→…とかをつかさどる上位のクラスは上手く分割できたが、
下位のクラスは分割できていない。(いわゆるView層とその他がごっちゃになってたりする)
・開放閉鎖の原則
まあまあできた。
実装してて、interfaceの変更はそれほどなかったように思う。
・リスコフの置換原則
まあまあできた。
・インターフェース分離の原則
そこそこできた。
分離は意識したが、もっと分離できた箇所があるような気もする。
・依存性逆転の原則
まあまあできた。
しかし、poor's man dependency injectionで実装したため注入がえらくめんどくさかった。
Zenjectを使ってみたい。
意外とできてるかも? 単一責任の原則のところは、VMMVデザインパターンなど使っていけばうまくいくと信じたい。
SOLID原則に従うと、デザインパターン使いたくなるということが良くわかった。学び。
アート
まず、自分は絵の素人だが、全部自前で描けたのは良かった。学びになるため。
がしゃがしゃ線を引くのが楽しくてついやってしまう。
輪郭線や中の塗りが動く手書きアニメーションは、必要とされる時間やスキルが少ない割には一定のラインまでクオリティを引き上げられる(それでも低いけど)ことが分かった。
ただ、あんまり雑に輪郭線動かしすぎるとダメ。
画面の一部が動くことで、そこに視線を集中させられる効果もあるから、
・モンスターが出てくるときはモンスターだけ動く
・話してる時は話してるキャラだけ動く
・アイテム選択中は止める
までできると良かった。
製作途中、アイテムウィンドウが開いてる時にフォーカス部分だけ動くようになってたのは分かりやすくて良かったのだが、モンスターやドクターが動くようになったことでその効果が薄れてしまった。
病院の内装や、キャラと背景との違いは、線の濃さで遠近感出せると良かったかもしれない。
その他
期間を超過してしまったのは反省…。この週で解決すべき課題をもう少し絞った方が良かったかも。
ゲームの規模の割に実装時間かかったのは、プログラミング勉強中なので仕方ない。
次回に向けて
引き続きプログラミングの課題に向き合って進めていきたい。
・MVVMデザインパターンをしっかり使う
・今回作った便利関数や機能を使いまわす
・新しいゲームを作るにあたってのベースとなるプロジェクトファイルを作る、ドキュメントを用意する
は確定でやりたくて、その他は時間を置いて考えます!