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持ってないから、実際に使ったこと無いので、ゲームを本当に作ろうとしたときの感触はわからないけれど



ノード連結によるプログラミングは、数多く存在する

まだまだきりがない

共通の課題として「大規模になるとスパゲッティーコードになりやすい」点がある

ここに見本画像を貼る

プログラム、特にインタラクティブなものはオブジェクトが増えたり、対応するイベントが増えると、カオスになる

あちこちの繋がりをグラフ表現野2次元に落とし込むことの本質的な困難

プログラミング言語自然言語は、言葉という1次元の表現で、多次元の構造物を表現している

  • 2次元は表、2次元配列的な利用法としての画像データ
  • 2.5次元あたりまでは箱を線で繋ぐグラフ表現が分かりやすい
  • それ以上はプログラミング言語による文字での記述のほうが分かりやすい場合も、多々ある

「1, 2, たくさん 」の法則(命名 私)


駄目で良いから、「作ってみたけど使えない」、「机上の空論」「絵に描いた餅」で良いから

一回作ってみることがよさそうだ
何か気づきが得られるかも

オマケ メモ

プログラミングの三本柱
(忘れないようにしないといけない)

  • 入れ子構造、直列化とイテレーションといった構造の組み換え(構造化プログラミング)
  • 検索、置換、関数、型による、オートメーション(入力が決まると決定論的に出力が決まること)
  • 式による表現、式の評価、変形、宣言的記述