Unity用のノードグラフ系のビジュアルスクリプティングアセットも多数出ておりますが、「ノーコーディング」「ノンコーディング」「プログラミングなしでゲームが作れる!」などという謳い文句でプログラミング初心者を誘い込む罠がありますよね。
そこで、ビジュアルスクリプティング使ったところで結局必要になるUnityやスクリプトの概念をざっと書きなぐっておきます。
- DOTSやECSなどについてはまだ初心者が気軽に手出せるものではないので割愛。
- シェーダーも今回は割愛。
Contents
Unityの構成要素
Unity使ってゲーム開発していくなら、「GameObject、Component、アセット、スクリプト(C#)、API、ゲームによくある要素」に関する最低限の知識は必須です。
GameObject
シーンに置くモノ。
必ずTransformコンポーネントを持ち、親子関係で位置向きスケールが決まる。
コンポーネントを複数付与出来て、GameObjectに挙動を設定していける。
- GameObjectの作り方
- コンポーネントの追加/削除のやり方
- プレハブの扱い方
このあたりの知識は必須。
Component
GameObjectに付与していろいろな挙動を実現させるもの。
- Unityが元から用意してるモノ
- サードパーティ製のアセットが提供してるモノ
- 自作したモノ
- などなど
どういう機能が用意されていて、何を自作しないといけないか、どれをどう設定していく必要があるかをマニュアルなど見て理解するのは必須。
アセット
シーンに直接置けないモノをとりあえずここではアセットと定義しときます。
- モデル
- テクスチャ
- スプライト
- シェーダー
- マテリアル
- アニメーション
- サウンド
- フォント
- プレハブ
- シーン
- などなど
ScriptableObjectなどを使ってデータベース自作する必要も出てきたり、シーン以外のモノ作る作業は結構多い。
スクリプト(C#)
ノンコーディングだとか言いつつも、結局スクリプト(C#というかプログラミングの基礎部分)の知識は必須。
- 型
- クラス
- 構造体
- フィールド
- プロパティ
- メソッド
- 変数
- インスタンス
これらが一体何なのかわかってないと「Rigidbody型のインスタンスに対してVector3型の変数positionを引数としてMovePositionメソッドを呼ぶ」とかいう説明を見かけたところで意味が理解できなく結局いずれ詰む。
他にもノードグラフが対応しきれていないモノが必要になる機会は多かれ少なかれ出てくるはずなので、最低限スクリプトを書けるようにするかメンバーにプログラマがいたほうが良いのは確実。
API
C#の構成要素だけでなく、Unityが用意しているAPIへの理解も必須。
例えば「Rigidbodyクラスにはどういったメンバーがあるか、それを使ったらどうなるか」をスクリプトリファレンスを調べて理解したり、自分で実際に試してみるのは大事。
ゲームによくある要素
物理ゲーなら物理演算(剛体とはなんぞ?みたいな)ことへの理解はあった方が良いし、落ちモノパズルならどういう判定が必要か~とかの理解は必須。
作ろうとしているものに対して、どうやって開発していくか調査し具現化していく能力(これこそが「広義のプログラミング能力」であり「プログラミング不要で~」とかいう謳い文句は誇張しすぎ)はどのみち必要になる。
ノンコーディングの利点
では、ノードグラフ系アセットを使う利点はどこにあるかを個人的に挙げてみます。
コンパイルエラーは出ない
少なくともグラフ上で設定できるものはコンパイルなしで組めるものなので、「;」や「}」とか忘れてエラーが出てるけどエラーの場所がよくわからんちんってことが防げる。
使えるものだけがリストに出てくる
APIとして何があるのか事前に理解してなくても使えるものだけリストに出てくるので、リストに出てきたこれはなんぞ?っと検索しやすい。
処理の流れが見える
実行中に今何させてるかグラフで見れるのでデバッグしやすい。
便利な特化系ノードグラフ
FSMやビヘイビアツリーなど用途が特化しているノードグラフであれば、コーディングを最小限に抑えて理路整然としたグラフを組みやすいなどの利点がある。
(とは言えFSMやビヘイビアツリーなどについての基礎知識も必須)
まとめ
流行りのノードグラフだからといって、それさえ使ってれば基礎知識なしで何でもできるわきゃないです。
それぞれ利点を理解して有効活用していきましょう。
(↓に自前のアセットの宣伝が出るけど、Arborだからどうこうって話がしたいわけじゃないのでそこはご理解を)
Unityのアセット販売中!
ステートマシンの状態遷移やパラメータはエディタで編集でき、
ゲームロジックに依存するステートの挙動はスクリプトで記述可能なエディタ拡張。
RPGツクールVXやWOLF RPGエディターのオートタイルに準拠したエディタ拡張。