Godot Engine におけるVisualScript代替品の構想(構想だけ)
Godot Engine (3,4)のGraphEdit クラス、GraphNode クラスの使い方が少しわかってきた(さっぱりわからない)。ここから、どう組み立てを進めるか、要件を一度リストアップしてみる
TL;DR;
- Godot 3.5まではVisualScriptが存在した。
- しかし、使われてないこと、改善が難しいことからGodot 4では廃止された。
- 実際に、VisualScriptそんなに使ったことない
- しかし、ノード型のGUI を作るためのクラスは4にも残っている(そのうち無くなるかも?)
- グラフ表現は見るぶんには好きなので、完全に無くなっちゃうと困るので、1個、GraphNode を使ったサンプルを作りたい
- Switchの「はじめてゲームプログラミング」が割と良さげ
- 色々違うし、自分の能力的にそのまま移植は無理
- さてどうしたものか
現状の問題
(あくまで自分の場合)
- クラスライブラリが、それなりに大きいので、1個憶える間に2個忘れる
- チュートリアルをこなしても、なかなか身につかない
GraphによるGodot のプログラミング環境を構築することによるメリット (上記の解決に役立つ部分)
- 1つのチュートリアルの内容を1つのノードに押し込められるようにすれば、箱と箱を線で繋ぐだけでプログラミング出来るようになる(はず)(ビジュアルスクリプトよりも粒度を大きく)
- シーンのヒエラルキーのツリー表現よりも、グラフ表現のほうが分かりやすい局面は有る
- 1つの形式に落とし込むことで、再利用しやすいコードを書けるようになるのでは(願望)
まずは大目標は「Switchの「はじめてゲームプログラミング」のようなノードを繋いでゲームを造れる環境をGodot 4に構築すること、である
具体的には、ゲームジャムやハッカソンのような短期間で、ちゃちゃっと手癖でアイデアをプロトタイピングしたい
Godot に限らないけれど、ブロック崩しとかインベーダーなどを作ってみた→から→次のステップで躓くのが、プロジェクトの大規模校
(大規模ではない)
シグナル(イベント発生によるコールバックの処理)があちこちに分散して存在して、何をどこで処理しているか分からなくなる
アセットがぐちゃぐちゃになる
掃除できない男
Switchの「はじめてゲームプログラミング」が優れている点
- ステージへのオブジェクトの配置と、ノードによるプログラミングが分離せず、同じ画面で一体になっている
- 上下に汎用の「連結ポート」があること
- ノードの役割が細かすぎず、大雑把過ぎず、いい感じ
https://www.nintendo.co.jp/switch/awuxa/reference/contents/index.html
Switch持ってないから、実際に使ったこと無いので、ゲームを本当に作ろうとしたときの感触はわからないけれど
ノード連結によるプログラミングは、数多く存在する
- Blenderのシェーダー、ジオメトリーノード
- Unreal Engine のブループリント
まだまだきりがない
共通の課題として「大規模になるとスパゲッティーコードになりやすい」点がある
ここに見本画像を貼る
プログラム、特にインタラクティブなものはオブジェクトが増えたり、対応するイベントが増えると、カオスになる
あちこちの繋がりをグラフ表現野2次元に落とし込むことの本質的な困難
プログラミング言語や自然言語は、言葉という1次元の表現で、多次元の構造物を表現している
「1, 2, たくさん 」の法則(命名 私)
駄目で良いから、「作ってみたけど使えない」、「机上の空論」「絵に描いた餅」で良いから
一回作ってみることがよさそうだ
何か気づきが得られるかも
オマケ メモ
プログラミングの三本柱
(忘れないようにしないといけない)