コーディングに縛られるな!
ここ1年ゲーム開発をしてきて、気づいたことがありました。
ゲーム開発はコーディングが全てじゃない
何言ってるんだこいつ?
自称Unityエンジニアのいう言葉じゃないと思われるかもしれませんが、『コーディング』に縛られることによって結果的に自分の首を締めてしまう結果になるんです。今回は騙されたと思って最後までお付き合いください。
(毎度言いますが、これはあくまで個人の見解です。またここでのゲーム開発はUnityでの開発を指しています。)
コーディングが全てじゃないの真意
Unity開発は実は既にコーディングしなくても良いことが多いゲームエンジンです。例えば、Collider,Rigidbodyといった類いのものはUnity側が用意してくれたものを使えば、それぽい物理挙動をしてくれます。文字ベースでは考えられないことですよね。(文字ベースゲーム制作に興味ある人はDirectXで調べて頑張ってください)
と少し話は逸れましたが、コンポーネント指向のUnityではこのようにコーディングしなくても良い場面が頻出します。
つまり本記事で言いたいことは
Unityで用意されたものを存分に利用してコーディングを減らそう!?
です。既に利用している人はこの時点でブラウザバック案件ですが、具体的な話を提示していきたいと思います。
例えば...
Animation
正直Animationを使わないとゲームによっては相当時間がかかります。以前、なぜAnimation,Animatorを使わなきゃいけないかとUnity初心者(他の言語とかはやってた人)に問われたことがありました。確かにコードベースのエンジニアからしたら謎の機能であり、自分で打ってしまった方が楽だし制御しやすいと思うでしょう。
でもあるなら使いません !?
話を戻します。
Animation関連を大いに活用することによってコードを劇的に減らすことができます。(いちいちキャクターのRig(節)をコーディングで制御は気が遠くなります。)
AnimationEventは特にコーディングの削減に期待できます。
簡単に説明するとアニメーション中にトリガーのようなものを設定でき、
再生中に好きなタイミングでスクリプトのメソッドを呼び出すことができます。アクションゲームなどキャラクターの動き+αあるようなゲームであれば必須の機能です。これによってアニメーション再生から何秒後に、別の動きをするようなコーディングは省くことができます。
他にも似たような機能である..
Timeline
これはUnity 2017.1から追加された便利機能です。カットシーンや敵の出現パターンにも活用できます。オブジェクトの表示、非表示を時間で直感的に並べていくことができます。音やカメラなどとも制御できます。
最大限使いこなせると一気にコーディングが省けると思います。
またUnity2019.1より追加されたSignalはさらに便利です。基本的な使い方は先ほど紹介したAnimationEventと似た感じです。
Timeline上においたSignalの任意の時間でスクリプトからメソッドを呼び出せます。
逆にこれらを使わないでコーディングだけでやろうと思えば全然できます。が、コーディング修行したい方やコード至上主義者でなけらば素直にUnityの機能を使う事をおすすめします。
特にゲーム開発中級者以上ならば、ゲーム開発の長期化の際にシステムの可視化するのにコーディングだけだと難しくなります。このAnimation中にこのメソッドを呼び出しているような体系の方が圧倒的に見やすいです(デバッグしやすい)。また Unityの機能にアンテナをはることによって、コーディング以外で実装できないかを検討できる広い視野を持つことができます。(これ大事)
なぜここまでコーディングに縛られるなと熱弁しているかと言いますと
広い視野で開発して欲しい!!
ただそれだけです。やはりUnityは知識勝負なところがあります。知っているかどうかであなたの開発意欲だったり、ストレス軽減へと繋げられるのです。コーディングだけと狭い視野でゲーム開発しないで広い視野で開発して欲しいのです。
ゲーム開発頑張りましょう!
短い記事になりました、ここまで読んでいただきありがとうございました。