2023:09:14
文書の過去の版を表示しています。
9/14日記
ゲーム開発
- GodotEngineを少し弄る
- 今日はGDExtensionを使ってみることにした。
- GDExtensionは下記ページに追加方法のサンプルが存在
https://docs.godotengine.org/en/stable/tutorials/scripting/gdextension/gdextension_cpp_example.html - これ見て思ったのは、「Miniscriptの変数バインドを書く場合、管理するデータをGDExtensionに含まないとコントロールできなくね?」という事。
- static関数の関数ポインタ紐づけてスクリプトから関数がコールされたらデータを更新するんだけど、これを汎用的にするのは割とハードルが高い(専用設計にしないとコントロールが困難だから。少なくともプレイヤー・エネミー・ボスは仕組みが違うため設計をそれぞれで行う必要がある)
- あと、オブジェクトをコントロールするためには座標や角度、利用する画像番号等の情報を書き込む必要があるんだけど、そのためには動作しているオブジェクトごとに情報を管理していく必要があるため、その情報をどこに置くのかという話になる。GDScript側でデータを管理する場合、GDExtensionからGDScriptの変数呼んで更新という話になるわけで、それは正常接続可能なの?という話。
- で、今の所の結論は「データ管理の仕組みもC++で書く必要がある(そこにスクリプトを紐付ける)」ということ。
- 上記のようにして強引に接続する(しかもバージョンごとのメンテが必要・データ管理システムのメンテも必要)よりかは、同じ役割をGDScriptで書くのが早いのでは?と思う。
- あくまで開発効率化(Unityのバージョンをまたいでも利用可能、ロジックを触らずに各データにバインド+更新可能)を目的としているので、逆に手間がかかるようであれば別の方法を検討するのが早いのではと考える。
- 特に「管理するデータそのものをGDExtension側に含める」というのが一番のネック。頻繁に更新する必要がある箇所に対し拡張扱いにするとなると少し問題がある。
- 来週以降はUnity側でCryPic.を触ろう。
ゲーム開発2
- 上記の通りではあるけど、じゃあC#だとどうなんだということで寝る前にC#で実装してみることにした。
- C#の機能は利用可能なので、それに紐づいて書けるMiniscriptは問題なく動いてる。
- ただ、どちらかというとGodotからC#側への連携する資料がまったく少ないのでそれ探すのに苦労した。
- 特にGodot4.0と4.1でかなりコアな関数名が違っているってどういうことだゴルァ!ってなった。
- 実装自体は全然時間かからなかったけど、上記の通りGodotのC#側に関する資料を探すのに時間くった。
- Miniscript使うのであればC#を使うのが一番早い気がする。あとはGDScriptと連携ができればベストかな。
2023/09/14.1694722152.txt.gz · 最終更新: 2023/09/15 05:09 by machiaworx