劇場版 拝啓 昔の自分へ
みなさん!
メリークリスマス!!!!
団体長のひろです!
アドカレ最終日は例年通り、団体長が務めさせていただきます!
よろしくお願いします!!!
まえがき
みなさんは知っていますか?あのくそ記事たちを…
1つ目は、僕がRiG++に入って初めてアドカレで書いた記事ですね。
内容としては、自分が小学生に描いていた漫画を改めて描いて、それをゲームにしようとしたけれど、見通しが甘すぎて、まったくできなかったっていう話です。
まぁ、今見てもひどいですね。とても、大学1年生とは思えません。
2つ目は、その一年後にアドカレで書いた記事ですね。
内容としては、みんなにいっぱいゲームしてほしい!っていうことを書きたかったけど、1年目の自分のせいで、前半がお粗末な内容になってしまったという話です。
まぁ、かわいそうですね。1年前の自分に足を引っ張られてしまってね。
さて、そんな僕が今年アドカレで書くのは
劇場版 拝啓 昔の自分へ
です!
…。
言いたいことはわかります。
どうせ、今年もできないんだろ。
もう、こんなことやめればいいのに。
そんな声がどこからともなく聞こえてきます…
でも!
それでも、僕は作りたい。
1年前、2年前の自分が未来の自分ならきっとやってくれる。
そう信じて、託してくれたゲームを必ず完成させたい!
1日で!
ということで、1日で自分がどれだけゲームが作れるのかを、自分がゲームをどういう風に作っているかの紹介と合わせて、記事に書いたので、是非、ご覧ください!
仕様・設計編(2時間)
僕はゲームを作る前には、個人製作でも、Googleドライブを使って、3つの書類を作ってから取り掛かります。
仕様書
言わずもがな、ゲームの仕様を記した書です。正直、仕様書を書いている時が、ゲームを作ってる中で一番楽しいかもしれません。なぜなら、自分がこれから作るゲームを思い描いて、うきうきしているからです。とにかく、ひたすらしたいことを書いていきます
設計書
設計書には以下の2つ(+1つ)を書いていきます。
・設計
仕様書を基に、実際に自分が実装する工程を記していきます。
これを予めしておくことで、実際にコードを書く際に迷わず、すらすらと書けるようになります。
Unityで作るスクリプトの名前と用途を記していきます。
これもまた、予めしておくことで、実装している時に、どれくらい分割してスクリプトを作ったらいいんだろうとか名前どうしようとかで迷うことがなくなるので、おススメです。
・(クラス図)
これは一応やれたらっていうやつです。
クラス図を作ることで、スクリプト間の関係性を一目で見れるようにします。
ただ、個人製作の場合、設計の時に、クラス図を思い浮かべながら書いているので、制作時間があまりない場合は、省略していいと思います。
(チーム制作の際は、チームメンバーがスクリプトをどういう繋がりで作っているかがUnityを見ないでもわかるので、チーム制作ではやることをおススメします!)
やることリスト
Googleスプレッドシートを利用して、設計書からシステムを作る工程や必要な素材を書いていきます。チェックボックスをつけることができ、かつ、カスタム数式を使って、チェックをつけたら列の色が変わるように設定すれば、自分の進捗度合いがパッとわかるようになるのでおすすめです。
この仕様書や設計書を作っている間に、実装していけばいいんじゃないのと思うかもしれませんが、実装していくうちに、あれも実装したいなという邪念が生まれてしまい、本来、やりたかったことが変わっていくということがあります。
なので、仕様書の書いたもの以外はとりあえず実装しないぞ!と自分への意思表示もかねて、時間がなくても、とりあえず、書くってことを僕はおススメします。
素材編(6時間)
続いて、ゲームで使う素材を作ります。
1日しか時間がないので、早くかつ高品質な2Dアニメーション素材を作成する方法を今回は使います。
まずは、ドン・キホーテに行き、白タイツ(約3000円)を購入します。
白タイツを装着し、自宅の緑のカーテンをグリーンバックと見立てて撮影を行います。
しかし、ここで問題が発生します。
このタイツ、顔が見えるタイプになっているので、このままだと、ただの白いおっさんがゲームに登場することになってしまいます。
そこで、パンツストッキングが家にあったので、これを被ります。
これで、顔が見えなくなりましたので、次の工程に進みます。
スマホのカメラで全身を覆うように録画をして、ひたすらゲームに使うアクションを撮ります
これを、パソコンに移し、動画編集ソフトAviutlで編集していきます。
Aviutlでクロマキー(指定色と似た色を透過)を使えば、背景を透過できるはずなのですが、背景に合わせて、体も少し透けて、ちょっとうまくいってません。
そこで、今度はカラーキー(指定色に似た輝度を透過)を使って、透過させます。
すると、思ったものではないですが、かっこよくなりました。
さらに、ここにこちらからお借りしたグラフィックペンエフェクトで手書きっぽくします。
これで下準備は完了したので、あとは、ひたすら
アニメーションに使う部分を抽出→連番BMPで出力→アニメーションに使う部分を抽出→連番BMPで出力→アニメーションに使う部分を抽出→連番BMPで出力→…
を繰り返していきます。
結果はこんな感じです。多いですね。
これで素材は完成しましたが、ここで、大きく時間を使ってしまったので、残り時間があと3時間となりました。急いで実装していきます。
実装編(3時間)
Unityを使って、ノンストップで実装していきます。
まず、使う素材をすべてインポートし、InputSystemの設定やタグの設定など、予め必要そうな設定をすべて行います。
続いて、メインシーンを作成し、地面や壁などのステージを作ったら、いよいよプレイヤーの実装に入ります
プレイヤーの実装は、まず、インポートした素材からアニメーションを作成し、Rigidbody2DやCollider2Dなど必要なコンポーネントを追加します
続いて、スクリプトを書きます、が!
ここであらかじめ設計をしておいたおかげで、迷うことなく、コードをすらすらと書くことができました。やっぱり、設計、大事。
実際書いた内容を説明していると、とんでもなく長くなってしまうため、概要だけ説明
基本的に、PlayerCoreというスクリプトを作り、isGround(地面についているか)、isAttack(攻撃しているか)などのプレイヤーの情報をここにすべて集約させます。
実際に行動をするスクリプト(PlayerMoverやPlayerAttackerなど)はPlayerCoreの情報を見て、移動できるか、攻撃できるかなどを判断して、行動するようにします。
そうすることで、行動スクリプト間が複雑に絡み合うことなく、プレイヤーの情報共有が行えます。
プレイヤーの実装を終えたころ、タイムアップとなりました。
最終的にこんな感じになりました。
まとめ
今回、1日でどれだけゲームが作れるかに挑戦したところ、結果、プレイヤーの動きまで完成しました。
完成までには至らなかったですが、まぁ、1日でここまでできたら上出来かなと思います。
今回、自分は小学校のころに描いた漫画を、ゲーム化させようというもので、”昔の自分”が考えていた夢にほんの少し近づけたのかなって思います。
日々の課題に追われ、毎日、忙しい日々を送っているみなさんも、是非、一度、深呼吸して、自分の人生を振り返って、子供のころにやりたかった夢を叶えてみてはいかがでしょうか。
それが、「僕のおすすめしたいこと」です。
終わりに
今日でRiG++ アドカレ2020 最終日です!
みなさん、楽しんでいただけたでしょうか?
まだ、読んでない記事があるよーって方はぜひ、読んでみてください!
どれもこれも良記事ばかりです!!!!!!
ということで、締めさせていただきたいと思います。
ありがとうございました!!!
よいお年を~