https://godotengine.org/
https://www.reddit.com/r/godot/
godotでクソゲー作ろうぜ!!
【軽量】godot engine - part2
■ このスレッドは過去ログ倉庫に格納されています
1名前は開発中のものです。
2021/04/30(金) 13:03:47.04ID:cptRhreJ245名前は開発中のものです。
2022/10/26(水) 17:53:06.49ID:8RUE2OgN 言語なんてアルゴリズムの表現手段でしかないしな
gdscriptはむしろpythonに近いお陰で他の言語にも置き換えやすいとおもうが
gdscriptはむしろpythonに近いお陰で他の言語にも置き換えやすいとおもうが
246名前は開発中のものです。
2022/10/26(水) 17:56:32.19ID:KhdHuysm C#で書いたからといって他のエンジンに持って行きやすいかと言われればそうでもないし
GDScriptもPython派生言語だからそういう意味では潰しがきかないわけでもないし
だいたい、どんな言語でも構造化なりオブジェクト指向なり関数型なり、
ちゃんとプログラミングという考え方自体を身につければ他の言語でもある程度使える
ただし、一番使ってて楽しくまたは楽に使える言語を使った方がプログラミングは身につくと思う
GDScriptもPython派生言語だからそういう意味では潰しがきかないわけでもないし
だいたい、どんな言語でも構造化なりオブジェクト指向なり関数型なり、
ちゃんとプログラミングという考え方自体を身につければ他の言語でもある程度使える
ただし、一番使ってて楽しくまたは楽に使える言語を使った方がプログラミングは身につくと思う
247名前は開発中のものです。
2022/10/27(木) 17:24:11.19ID:bySOLoC3 俺は本職だと一番Python使ってるからGDscriptで書くよ
でもC#もいい言語だと思ってる
でもC#もいい言語だと思ってる
248名前は開発中のものです。
2022/10/29(土) 10:48:37.69ID:kAu4Lre8 Python風じゃなくてPython使わせてくれたら嬉しいんだけど速度的な理由だろうな
C#とGDScriptは3,4倍速度が違うとかどっかのブログにも書いてあったし
C#とGDScriptは3,4倍速度が違うとかどっかのブログにも書いてあったし
249名前は開発中のものです。
2022/10/29(土) 11:08:33.46ID:kAu4Lre8 ごめんC#とGDScriptの速度については
そんな単純な問題じゃないっぽい
そんな単純な問題じゃないっぽい
250名前は開発中のものです。
2022/10/29(土) 12:09:34.77ID:o2Pu4uDF 元々独自スクリプトはGCされたくないから作ったって言ってたと思う
251名前は開発中のものです。
2022/10/29(土) 14:51:10.61ID:kN/bDEgG 確か元々はPythonとかの言語を組み込む予定だったけど
試作の段階で様々な問題が発生したから独自のスクリプトに変更して最適化したって話だったと思う
Pythonになってたら逆に使いにくくなってたかもって話だな
試作の段階で様々な問題が発生したから独自のスクリプトに変更して最適化したって話だったと思う
Pythonになってたら逆に使いにくくなってたかもって話だな
252名前は開発中のものです。
2022/10/29(土) 21:26:56.25ID:tH1pNPxI 軽いしツールだと思うんだけどやっぱシェア率が低いからか日本語の情報少ないのが…
253名前は開発中のものです。
2022/10/30(日) 00:12:50.88ID:pNBUYeVL ゆうて機械翻訳でも使えば問題ないだろ
つべで英語字幕つきの解説動画とかも教材になる
つべで英語字幕つきの解説動画とかも教材になる
254名前は開発中のものです。
2022/11/03(木) 14:53:03.00ID:HTPOVFIH func _physics_process( ):
var velocity = Vector2 (
Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left"),
Input.get_action_strength("ui_down") - Input.get_action_strength("ui_up")
)
var move_direction = velocity.normalized()
move_and_slide(spd * move_direction)
こういう移動のスクリプトで、画像はスプライトの方でまたright - left の部分コピペして対応Vectorに割り当てるっていうやり方見て
なるほどとは思ったんだけど、各方向で立ちポーズとかスプライト増やしていくと同じキー入力のスクリプトも重複していくわけで、
そういうのってバグの原因になったりしない?
結局同じキー入力の動作は1か所にまとめたほうがいいとかそんな事ない?
var velocity = Vector2 (
Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left"),
Input.get_action_strength("ui_down") - Input.get_action_strength("ui_up")
)
var move_direction = velocity.normalized()
move_and_slide(spd * move_direction)
こういう移動のスクリプトで、画像はスプライトの方でまたright - left の部分コピペして対応Vectorに割り当てるっていうやり方見て
なるほどとは思ったんだけど、各方向で立ちポーズとかスプライト増やしていくと同じキー入力のスクリプトも重複していくわけで、
そういうのってバグの原因になったりしない?
結局同じキー入力の動作は1か所にまとめたほうがいいとかそんな事ない?
255名前は開発中のものです。
2022/11/05(土) 09:42:58.50ID:V31zIup2 そうね。重複処理は避けるようにすると効率がいいしデバッグも楽
spriteとかは最後に動いた方向をcharactor_directionとかのグローバル変数に保存してやればいちいち再計算する必要ないし使いまわせるな
もっといえばPlayerクラス作ってそこに上のコード書くべき
プレイヤーキャラを増やすときにPlayerクラスから継承させればキー入力や向き計算のコードを何度も書く必要なくなる
spriteとかは最後に動いた方向をcharactor_directionとかのグローバル変数に保存してやればいちいち再計算する必要ないし使いまわせるな
もっといえばPlayerクラス作ってそこに上のコード書くべき
プレイヤーキャラを増やすときにPlayerクラスから継承させればキー入力や向き計算のコードを何度も書く必要なくなる
256名前は開発中のものです。
2022/11/05(土) 16:24:05.73ID:C0d3aq9r >>255
あっそうか、コピペでやったとしてコード変更する場合は全部いちいち直すことになったりするんだね
クラスとかよくわからなくて後回しにしてたけど、それならぼちぼち勉強してみます。
レスありがとう
ところで4.0ベータ新しいの来たけどやっぱ重いなぁ
3D別にいらないから新しいGDscriptだけ移植した3.6出してくれないかな・・・
あっそうか、コピペでやったとしてコード変更する場合は全部いちいち直すことになったりするんだね
クラスとかよくわからなくて後回しにしてたけど、それならぼちぼち勉強してみます。
レスありがとう
ところで4.0ベータ新しいの来たけどやっぱ重いなぁ
3D別にいらないから新しいGDscriptだけ移植した3.6出してくれないかな・・・
257名前は開発中のものです。
2022/11/11(金) 21:20:17.81ID:zBkuHTjr 今日はずっとキャラの左右の移動で反転する時にコリジョンとかもまとめて反転させようとしてscale.xでやろうとしたけどダメだった
やっぱりscaleだとめんどくさい事になるらしい
スプライトはflip_hで反転させて、コリジョンは右向き左向きで別々のを使うしかないか
やっぱりscaleだとめんどくさい事になるらしい
スプライトはflip_hで反転させて、コリジョンは右向き左向きで別々のを使うしかないか
258名前は開発中のものです。
2022/11/11(金) 23:33:48.43ID:aG0vRUEb >>257
この動画みたいにPosition2Dの子にCollision配置して
AnimationPlayerで向きとCollisionの位置管理すれば良いんじゃないか?
https://youtu.be/vDbEfmPcv-Q?t=698
この動画みたいにPosition2Dの子にCollision配置して
AnimationPlayerで向きとCollisionの位置管理すれば良いんじゃないか?
https://youtu.be/vDbEfmPcv-Q?t=698
259名前は開発中のものです。
2022/11/12(土) 06:26:11.13ID:pKcsz4rc 以前、「4.0では丸ごと簡単に反転できるようになる」って読んだ記憶がある
まだ付いてないのかな
まだ付いてないのかな
260名前は開発中のものです。
2022/11/12(土) 18:23:56.88ID:/k9KXNO/261名前は開発中のものです。
2022/11/13(日) 09:18:40.14ID:1DI0NllO カスタムリソース便利そうで感動してる
JSONファイルにデータまとめる必要なかったんや…セーブするときとかは別として
JSONファイルにデータまとめる必要なかったんや…セーブするときとかは別として
262名前は開発中のものです。
2022/11/14(月) 21:51:44.64ID:DmVw/pk1 インスペクターのプロパティにオンカーソルして出てくるツールチップの内容をコピーする方法ってありますか?
マウス動かすとツールチップ消えてしまう…
ドキュメントに飛んだり翻訳したいだけだから内容手打ちでもいいんですけどコピペ出来たら少し楽になるはず
マウス動かすとツールチップ消えてしまう…
ドキュメントに飛んだり翻訳したいだけだから内容手打ちでもいいんですけどコピペ出来たら少し楽になるはず
263名前は開発中のものです。
2022/11/15(火) 05:36:04.58ID:UkFl56W7264名前は開発中のものです。
2022/11/15(火) 07:41:44.45ID:pXFSyugy ttps://github.com/godotengine/godot/issues/62322
ここらへんの話って関係あるんかな
ここらへんの話って関係あるんかな
265名前は開発中のものです。
2022/11/15(火) 12:55:08.14ID:KaFyj/P8 たぶんVulkanがらみじゃないの
Vulkan自体は高速だけど、高度な3Dグラフィック用途を想定してるから
デフォルト状態では3.xよりは重くなるとか?
2D組にはとばっちりだけど最適化やOpenGL対応を待つしかないかもしれん
Vulkan自体は高速だけど、高度な3Dグラフィック用途を想定してるから
デフォルト状態では3.xよりは重くなるとか?
2D組にはとばっちりだけど最適化やOpenGL対応を待つしかないかもしれん
266名前は開発中のものです。
2022/11/19(土) 16:55:25.28ID:Sgpa0P9X インスペクターでプロパティにカーソル合わせたときに、小さなウィンドウが出てプロパティ名の詳細とか出てくるけど、
その説明を選択してコピーしたりすることってできるのかな…
その説明を選択してコピーしたりすることってできるのかな…
267名前は開発中のものです。
2022/11/19(土) 17:25:39.56ID:XlIO+Ov6 4.0ベータ5、win64版zipの中に入ってる「Godot_v4.0-beta5_win64_console.exe」って何?
268名前は開発中のものです。
2022/11/19(土) 23:12:54.93ID:2UXZ2zLM269名前は開発中のものです。
2022/11/20(日) 00:42:35.22ID:HRkuewP0 >>266
262(3.5.1)だけど調べたり色んなキー押した感じ多分無いですね…
インスペクターのプロパティを右クリックして「プロパティのパスをコピー」(「プロパティをコピー」だと何もコピーされない)でプロパティ名をコピーできるのでそれ+ノード型でググるか、スクリプト編集画面の「ヘルプを検索」って所に貼り付けて出てきた英語の解説をコピーして翻訳するのが多分一番早いと思います
自分も初心者なのでもっといい方法あったらすみません…
262(3.5.1)だけど調べたり色んなキー押した感じ多分無いですね…
インスペクターのプロパティを右クリックして「プロパティのパスをコピー」(「プロパティをコピー」だと何もコピーされない)でプロパティ名をコピーできるのでそれ+ノード型でググるか、スクリプト編集画面の「ヘルプを検索」って所に貼り付けて出てきた英語の解説をコピーして翻訳するのが多分一番早いと思います
自分も初心者なのでもっといい方法あったらすみません…
270名前は開発中のものです。
2022/11/20(日) 11:28:01.31ID:ENrZX5Hh271名前は開発中のものです。
2022/11/20(日) 18:03:22.02ID:S1+t9UOG dome keeperとかbrotatoとか最近スマッシュヒットも多いねGodot
272名前は開発中のものです。
2022/11/22(火) 19:17:21.78ID:+z4Kr0Ko 結局3.4使ったほうがいいのかな
273名前は開発中のものです。
2022/11/25(金) 15:29:17.82ID:trs/h7GY 4.0使ったチュートリアル動画見たらシーン実行時に一瞬白い画面が出るのって仕様なんだな
おま環かと思ってた
ムービーエディターとかよりもっと軽量化してくれ
おま環かと思ってた
ムービーエディターとかよりもっと軽量化してくれ
274名前は開発中のものです。
2022/11/25(金) 17:22:17.95ID:rsVodhwO 4.0そんな重いの?
Unityが重いから移ってきたんだけど
Unityが重いから移ってきたんだけど
275名前は開発中のものです。
2022/11/25(金) 18:32:10.65ID:TwLj7IEJ (初回)起動時にはキャッシュの関連で時間かかるようにはなったけど
win+nvidiaの環境では重くはなってないと思う
後ガッチガチの最新の3D使うなら重いのは当然で
UnityやUEの方が最適化されてそうだけど比較してどれくらいの差があるのかは分からない
win+nvidiaの環境では重くはなってないと思う
後ガッチガチの最新の3D使うなら重いのは当然で
UnityやUEの方が最適化されてそうだけど比較してどれくらいの差があるのかは分からない
276名前は開発中のものです。
2022/11/26(土) 17:42:34.75ID:J26Ad+xm godot4 beta6でなんだけど
@export var arr0 : Array[String] :
set(val) : arr = val
get : return arr
@export var arr1 : Array[String]
これでarr0, arr1ともインスペクタで値設定した時にarr0の方だけ起動時に空っぽになるのはなんでだ
そもそも推奨されない書き方なのかただのGDScript2.0のバグか…
@export var arr0 : Array[String] :
set(val) : arr = val
get : return arr
@export var arr1 : Array[String]
これでarr0, arr1ともインスペクタで値設定した時にarr0の方だけ起動時に空っぽになるのはなんでだ
そもそも推奨されない書き方なのかただのGDScript2.0のバグか…
277名前は開発中のものです。
2022/11/26(土) 17:43:25.78ID:J26Ad+xm @export var arr0 : Array[String] :
set(val) : arr0 = val
get : return arr0
だった
どちらにせよ空になるけど
set(val) : arr0 = val
get : return arr0
だった
どちらにせよ空になるけど
278名前は開発中のものです。
2022/11/26(土) 20:23:20.46ID:ha0BVHr8 型書いてるのか
279名前は開発中のものです。
2022/11/27(日) 05:35:30.31ID:oP3glQqT 型書いた方がインスペクタで要素毎にいちいち型指定しなくて済むからな
>>277
Array[String]の代わりにPackedStringArrayってのもあるぞ
バグっぽいしRedditで聞いて何ならGithubにIssue作成しよう
>>277
Array[String]の代わりにPackedStringArrayってのもあるぞ
バグっぽいしRedditで聞いて何ならGithubにIssue作成しよう
280名前は開発中のものです。
2022/11/30(水) 12:09:10.09ID:2lntJozP https://godotengine.org/article/release-management-4-0-and-beyond
これ見て思ったけど新バージョンに乗り換えるのは4.1出る頃が安牌かな
これ見て思ったけど新バージョンに乗り換えるのは4.1出る頃が安牌かな
281名前は開発中のものです。
2022/11/30(水) 19:47:12.02ID:tKTU5y6D 3dやるわけじゃないので4.0系は当分先でいいかな
funcref無くせるくらいしか嬉しいところない気もするし
funcref無くせるくらいしか嬉しいところない気もするし
282名前は開発中のものです。
2022/12/08(木) 01:39:03.01ID:Gw9Y9R2J283名前は開発中のものです。
2022/12/10(土) 11:50:00.29ID:q8hNkKsB res://の外をスクリプトから操作できないようにする設定とかないですかね
284名前は開発中のものです。
2022/12/23(金) 00:15:25.63ID:Tbr7Y4d5 4.0ベータ版OpenGLに(仮?)対応したね
285名前は開発中のものです。
2022/12/23(金) 23:57:35.74ID:UlG4s5Se beta9出るの遅いと思ってたけど出てたか
286名前は開発中のものです。
2022/12/24(土) 17:25:48.04ID:ysMbv+B1 アニメーションツリーはラグが発生するって知らなかった
見下ろし型で4方向のどこかに攻撃 → 別の方向の移動キーを押しっぱなしすると、
アニメーションプレーヤーの攻撃アニメ後に待機状態に戻る関数呼び出しで攻撃が終わる直前に
その別方向のベクトル拾って一瞬違う向きのアニメーションが表示されてしまう
ツリーは移動くらいにしか使えないか?
見下ろし型で4方向のどこかに攻撃 → 別の方向の移動キーを押しっぱなしすると、
アニメーションプレーヤーの攻撃アニメ後に待機状態に戻る関数呼び出しで攻撃が終わる直前に
その別方向のベクトル拾って一瞬違う向きのアニメーションが表示されてしまう
ツリーは移動くらいにしか使えないか?
287名前は開発中のものです。
2022/12/24(土) 18:31:58.69ID:6to+PxSN よく分からんけど整理すると
① 攻撃キー入力
② 攻撃アニメーション開始
③ アニメーション中に方向キー長押し
④ 攻撃アニメーションの中で初期化関数呼出
攻撃アニメーション終了
⑤ 方向キーの入力が検知され、ツリー遷移
同時に④で呼出されていた関数が完了
ツリーが初期化後の状態に強制変更される
⑥ 次フレームで初期化後の状態が表示される
⑦ 方向キーの入力が検知され、ツリー遷移
⑧ 結果的にワンテンポ遅れてるように見える
って事か?コードの組み方な気がするが
① 攻撃キー入力
② 攻撃アニメーション開始
③ アニメーション中に方向キー長押し
④ 攻撃アニメーションの中で初期化関数呼出
攻撃アニメーション終了
⑤ 方向キーの入力が検知され、ツリー遷移
同時に④で呼出されていた関数が完了
ツリーが初期化後の状態に強制変更される
⑥ 次フレームで初期化後の状態が表示される
⑦ 方向キーの入力が検知され、ツリー遷移
⑧ 結果的にワンテンポ遅れてるように見える
って事か?コードの組み方な気がするが
288名前は開発中のものです。
2022/12/25(日) 02:03:59.84ID:+E+0WeR4 >>287
https://i.imgur.com/7m7Q4BY.jpeg
移動、攻撃アニメーションははツリーで管理
攻撃時に攻撃ステートになってアニメーション中は移動できない
呼び出した関数で移動ステート(stand)に戻って動けるようになる
別方向のキー入力してると動く直前に攻撃アニメの1コマ目が見えておかしいってことです
スクリプトはHeartBeastの丸写しなんだけど
https://www.youtube.com/watch?v=0nd1zNiy0C4&list=PL9FzW-m48fn2SlrW0KoLT4n5egNdX-W9a&index=9&ab_channel=HeartBeast
結局ツリーを使わずステート形式のスクリプトで動かしたら、その変な1コマ表示は出ないのでツリーのせいじゃないかと
https://i.imgur.com/7m7Q4BY.jpeg
移動、攻撃アニメーションははツリーで管理
攻撃時に攻撃ステートになってアニメーション中は移動できない
呼び出した関数で移動ステート(stand)に戻って動けるようになる
別方向のキー入力してると動く直前に攻撃アニメの1コマ目が見えておかしいってことです
スクリプトはHeartBeastの丸写しなんだけど
https://www.youtube.com/watch?v=0nd1zNiy0C4&list=PL9FzW-m48fn2SlrW0KoLT4n5egNdX-W9a&index=9&ab_channel=HeartBeast
結局ツリーを使わずステート形式のスクリプトで動かしたら、その変な1コマ表示は出ないのでツリーのせいじゃないかと
289名前は開発中のものです。
2022/12/25(日) 05:21:07.62ID:uN9S4Wke >>288
https://reddit.com/r/godot/comments/u3iq47/why_is_there_a_one_frame_lag_in_animation_tree
https://github.com/godotengine/godot/issues/52518
調べたらバグっぽいな
ループさせないなりadvance()使うなりアニメーションの終了前にattack_animation_finished()呼ぶなり工夫して回避するしかなさそう
因みに3.5.1で試すと確かに発生したけど4.0(beta9)で見ると発生しなかったから既に修正済みっぽい
https://reddit.com/r/godot/comments/u3iq47/why_is_there_a_one_frame_lag_in_animation_tree
https://github.com/godotengine/godot/issues/52518
調べたらバグっぽいな
ループさせないなりadvance()使うなりアニメーションの終了前にattack_animation_finished()呼ぶなり工夫して回避するしかなさそう
因みに3.5.1で試すと確かに発生したけど4.0(beta9)で見ると発生しなかったから既に修正済みっぽい
290名前は開発中のものです。
2022/12/25(日) 14:47:42.42ID:+E+0WeR4 おお、4.0はまだいいかと思ってたけどそのへんも対応されてたんですね。詳しくありがとうございます。
ベータ10まで来てるし安定版そろそろかなぁ
もっと軽くなってほしいけど・・・
ベータ10まで来てるし安定版そろそろかなぁ
もっと軽くなってほしいけど・・・
291名前は開発中のものです。
2023/01/03(火) 03:27:06.43ID:Z9Iqiz3d Godotに限らない話なんだけど
セーブとロードの仕組みって
ゲームの進行で変化する値を
ステージとかマップ座標とか各キャラステータスとか並び順とかこなしたイベントとか
全部辞書変数とかに格納して
JSONとかの形に外部に出力
ロードする時は読み込んだ値を1つずつ所定の変数に放り込んで
ゲーム開始処理も変数の値に基づいて
「このマップのこの座標に遷移」
「先頭のキャラはこれでHPがこうで状態異常がこう」
「宝箱はこのマップのこれ以外は全部開けてる」
とか再現するように関数作る
って感じであってる?
調べても仕組みがどうもピンと来なくて、エラー吐かれたらお手上げするしか無いなってなかなか手出せなくて……
セーブとロードの仕組みって
ゲームの進行で変化する値を
ステージとかマップ座標とか各キャラステータスとか並び順とかこなしたイベントとか
全部辞書変数とかに格納して
JSONとかの形に外部に出力
ロードする時は読み込んだ値を1つずつ所定の変数に放り込んで
ゲーム開始処理も変数の値に基づいて
「このマップのこの座標に遷移」
「先頭のキャラはこれでHPがこうで状態異常がこう」
「宝箱はこのマップのこれ以外は全部開けてる」
とか再現するように関数作る
って感じであってる?
調べても仕組みがどうもピンと来なくて、エラー吐かれたらお手上げするしか無いなってなかなか手出せなくて……
292名前は開発中のものです。
2023/01/03(火) 16:34:57.74ID:jU/Qlt27 結果的に意図した動作になるなら、方法は自分が一番把握できる方法を使えば良い
293名前は開発中のものです。
2023/01/03(火) 17:37:06.62ID:NzOGVfJd ゲームのコンセプトによってどういう実装が適切かはまったく違ってくるからね
極端な話、あえてセーブがないコンセプトのゲームだってあるんだし
実行中のステートをなるべく完全に再現するコンセプトでも、セーブポイントをいつでもできるようにするか
特定の箇所のステージクリアなど敵味方の配置などは保存しなくていいタイミングにするかでもまったく違ってくる
極端な話、あえてセーブがないコンセプトのゲームだってあるんだし
実行中のステートをなるべく完全に再現するコンセプトでも、セーブポイントをいつでもできるようにするか
特定の箇所のステージクリアなど敵味方の配置などは保存しなくていいタイミングにするかでもまったく違ってくる
294名前は開発中のものです。
2023/01/03(火) 20:49:27.53ID:rzolJPWn 必要なだけ再現できるデータを保存すればいいんよ
データからプログラム変数の状態を復元できるように設計しておく必要がある
データからプログラム変数の状態を復元できるように設計しておく必要がある
295名前は開発中のものです。
2023/01/03(火) 22:51:44.15ID:Z9Iqiz3d とりあえず
必要な変数を外部に保存
読み取ってそれぞれの変数を再配置
再配置したデータを元にゲーム部分を開始
そういう関数を作って必要な場面(ゲーム部分開始前とか)で実行
っていうイメージ自体はセーブ・ロードの挙動からそれほど外れてないっぽい?
基礎的な動かし方さえ変な勘違い無ければ練習してみようかなと思う
あと保存しなくて良いタイミングにするっての何かすごい納得できた
RPGのセーブポイントでパーティ全回復するタイプとかそういう理由もあったのか
必要な変数を外部に保存
読み取ってそれぞれの変数を再配置
再配置したデータを元にゲーム部分を開始
そういう関数を作って必要な場面(ゲーム部分開始前とか)で実行
っていうイメージ自体はセーブ・ロードの挙動からそれほど外れてないっぽい?
基礎的な動かし方さえ変な勘違い無ければ練習してみようかなと思う
あと保存しなくて良いタイミングにするっての何かすごい納得できた
RPGのセーブポイントでパーティ全回復するタイプとかそういう理由もあったのか
296名前は開発中のものです。
2023/01/04(水) 09:44:27.95ID:eYuX7IgK godotあんま触っていからエアプかもしれんけど各ノードでやってもいいと思うよ
SaveGroup作ってグループからノード取得
↓
ダックタイピングorセーブベースみたいなクラス継承してるそれぞれのセーブ関数とロード関数一括で呼び出す
それぞれのセーブ、ロードの実装は
各ノードでやれば全部の配置考える必要ないから
追加・削除が楽
SaveGroup作ってグループからノード取得
↓
ダックタイピングorセーブベースみたいなクラス継承してるそれぞれのセーブ関数とロード関数一括で呼び出す
それぞれのセーブ、ロードの実装は
各ノードでやれば全部の配置考える必要ないから
追加・削除が楽
297名前は開発中のものです。
2023/01/04(水) 09:52:53.50ID:eYuX7IgK あと確かgodotはリソースクラス丸々セーブできたはずだからjsonでなくてもいい
その辺はリファレンス見てくれ
その辺はリファレンス見てくれ
298名前は開発中のものです。
2023/01/04(水) 18:40:56.73ID:IxlseNjM 実装に慣れていない人に新しい知識を与え過ぎると混乱の要因になる
JSONでも何でもいいから、知ってる基本的な知識の中で処理を実装してみることを考えた方がいい
それでも上手くいかない時に、技術的な質問をすれば良い
使い慣れて仕組みがわかるようになれば自然ともっと良い方法がわかるようになる
一応、公式では辞書を使った方法をサンプルを出してる
https://docs.godotengine.org/ja/stable/tutorials/io/saving_games.html
JSONでも何でもいいから、知ってる基本的な知識の中で処理を実装してみることを考えた方がいい
それでも上手くいかない時に、技術的な質問をすれば良い
使い慣れて仕組みがわかるようになれば自然ともっと良い方法がわかるようになる
一応、公式では辞書を使った方法をサンプルを出してる
https://docs.godotengine.org/ja/stable/tutorials/io/saving_games.html
299名前は開発中のものです。
2023/01/05(木) 02:37:35.76ID:KCtON2fJ 丁寧にありがとうございます
ノードの必要な変数を辞書変数に格納して返り値にする関数作る
セーブ用の関数内で各関数を呼び出してそれぞれ取得
公式通りにJSONで書き出し読み込み
読み込み処理後に変数が変わってるか確認
こんな感じから始めてみようと思う
リソースクラスはセーブ調べる途中で見つけて
分かりそうで分からないまま放置してたの思い出した
保存したい項目自作して一意の.tresファイルに上書きみたいに理解してた
間違ってなかったらセーブのやり方理解してから手出してみたいと思う
ResourceSaverとか何者なのか今も全く理解できてないからもっと勉強しないとだなあ
ノードの必要な変数を辞書変数に格納して返り値にする関数作る
セーブ用の関数内で各関数を呼び出してそれぞれ取得
公式通りにJSONで書き出し読み込み
読み込み処理後に変数が変わってるか確認
こんな感じから始めてみようと思う
リソースクラスはセーブ調べる途中で見つけて
分かりそうで分からないまま放置してたの思い出した
保存したい項目自作して一意の.tresファイルに上書きみたいに理解してた
間違ってなかったらセーブのやり方理解してから手出してみたいと思う
ResourceSaverとか何者なのか今も全く理解できてないからもっと勉強しないとだなあ
300名前は開発中のものです。
2023/01/06(金) 20:28:15.92ID:ltY0usEG セーブデータって大体どのゲームでも必要だけど自作すると思ってる以上に面倒だよね
301名前は開発中のものです。
2023/02/10(金) 01:19:40.06ID:oHvfpegd いよいよGodot4.0もRC1か
3.xと大分触り心地変わって来たから早いとこ日本語ドキュメント揃えて欲しいな
3.xと大分触り心地変わって来たから早いとこ日本語ドキュメント揃えて欲しいな
302名前は開発中のものです。
2023/03/02(木) 00:12:46.26ID:ADTXdDzF 4.0正式来たってよ
303名前は開発中のものです。
2023/03/02(木) 04:58:49.05ID:Bxb2JZRt 祝4.0‼︎‼︎
304名前は開発中のものです。
2023/03/02(木) 11:49:38.88ID:TfW4Hj6z 旧バージョンは3.0のレンダラーだと出力したゲームがCPU使用率はショボいのに
CPUクロックだけ常時フル回転する謎のおま環に悩んで使うのやめたんだが
4.0だと直ってたやったぜGodot始まったわ
CPUクロックだけ常時フル回転する謎のおま環に悩んで使うのやめたんだが
4.0だと直ってたやったぜGodot始まったわ
305名前は開発中のものです。
2023/03/02(木) 16:15:29.08ID:sRzc+JvW よし作るか!!
306名前は開発中のものです。
2023/03/02(木) 18:07:21.19ID:mhcZUQ81 公開が半年くらい先になるような作品なら使い始めても良いんじゃね
コミュニティでも言われてるけど、イベントに合わせて急いで出した感は結構強い
でも、画面が崩れたりクラッシュだらけのベータ時期よりは結構安定してるから少し待てば十分安定すると思う
コミュニティでも言われてるけど、イベントに合わせて急いで出した感は結構強い
でも、画面が崩れたりクラッシュだらけのベータ時期よりは結構安定してるから少し待てば十分安定すると思う
307名前は開発中のものです。
2023/03/02(木) 19:12:22.64ID:rI5g0K7d 俺Sandyおじさんだから蚊帳の外
308名前は開発中のものです。
2023/03/03(金) 09:26:55.90ID:IEEY0QS7 ブランニューエンジンと言ってるが、ほんまに想像以上に別物で互換がないから、しばらくは3.5でがんばる
3Dゲーム作りたい人は1から作り直ししてでも4.0に移行した方がよさそうだけども
3Dゲーム作りたい人は1から作り直ししてでも4.0に移行した方がよさそうだけども
309名前は開発中のものです。
2023/03/03(金) 11:59:52.10ID:KKp9WiVq alphaからずっと4.0使って来たけど3.xに比べてgdscriptの感じも大分変わったし移行するなら早めにしちゃった方が良いぞ
310名前は開発中のものです。
2023/03/03(金) 12:12:41.51ID:rDoDXzfX 今まで使ってなかったけど、新しいgdscriptはちゃんと動くんなら使いやすそうな仕様だね
311名前は開発中のものです。
2023/03/03(金) 18:49:35.53ID:sAMS/0LL そんなに違うのかー
日本語のレビューとかもっと見てみたいけどね
日本語のレビューとかもっと見てみたいけどね
312名前は開発中のものです。
2023/03/03(金) 21:32:27.27ID:iqGMNq7E 床レイヤーと壁レイヤー?と思ったら動く足場用のプロパティか・・・
bodyは名前色々変わってるしYsortノードも無くなってプロパティで設定できると・・・
マジで別物すぎるだろ
これから始める人は3触らない方がいいな
bodyは名前色々変わってるしYsortノードも無くなってプロパティで設定できると・・・
マジで別物すぎるだろ
これから始める人は3触らない方がいいな
313名前は開発中のものです。
2023/03/04(土) 07:00:07.48ID:fVoTFsxt ラムダとやら全然わかんね
まぁ全ての機能を無理に使う必要ないけど
まぁ全ての機能を無理に使う必要ないけど
314名前は開発中のものです。
2023/03/04(土) 18:00:04.57ID:ZhmEd2qI ↓みたいなCallable型の引数を取る関数があった時に
func foreach(arr:Array, f:Callable):
var i:int = 0
for e in arr:
f.call(i, e)
i+=1
↓foreach()の第2引数に定義済の関数を渡すのが普通のやり方
var result:int = 0
var arr:Array[int] = [3, 5, 7]
func sum(i, e):
print("%d = %d" % [i, e])
result += e
func _ready():
foreach(arr, sum)
print("result = %d" % result)
↓foreach()の第2引数に直接funcを書けるのがラムダ式
var result:int = 0
var arr:Array[int] = [3, 5, 7]
func _ready():
foreach(arr, func(i, e):
print("%d = %d" % [i, e])
result += e
)
print("result = %d" % result)
signalを受け取った時の処理とかもconnect("signal", func():~)みたいな書き方が出来るから
より感覚的にコーディング出来る気がする
func foreach(arr:Array, f:Callable):
var i:int = 0
for e in arr:
f.call(i, e)
i+=1
↓foreach()の第2引数に定義済の関数を渡すのが普通のやり方
var result:int = 0
var arr:Array[int] = [3, 5, 7]
func sum(i, e):
print("%d = %d" % [i, e])
result += e
func _ready():
foreach(arr, sum)
print("result = %d" % result)
↓foreach()の第2引数に直接funcを書けるのがラムダ式
var result:int = 0
var arr:Array[int] = [3, 5, 7]
func _ready():
foreach(arr, func(i, e):
print("%d = %d" % [i, e])
result += e
)
print("result = %d" % result)
signalを受け取った時の処理とかもconnect("signal", func():~)みたいな書き方が出来るから
より感覚的にコーディング出来る気がする
315名前は開発中のものです。
2023/03/07(火) 13:47:48.70ID:OJB8Hm7j 2Dのためにgodot使ってるから4.0はしばらくいいかな…
2Dでも何か利点ってある?
2Dでも何か利点ってある?
316名前は開発中のものです。
2023/03/07(火) 13:55:51.64ID:fAhovnpz 3D酔いしない
317名前は開発中のものです。
2023/03/07(火) 17:06:21.09ID:50UBZi0H >>315
今後のサポートが長い
今後のサポートが長い
318名前は開発中のものです。
2023/03/07(火) 17:10:09.23ID:RVxgtnpD Godotの2Dはピクセル単位の整数で座標指定できるから好き
319名前は開発中のものです。
2023/03/07(火) 17:16:22.04ID:1iY7lsGn 現状、4.0の2D系は色々と不足してて不満が多いみたいね(特にドット系)
4.1で多くの問題は解決される予定だから長い目で見ればメリットは十分あるよ
それも来年くらいの話になりそうだけど
4.1で多くの問題は解決される予定だから長い目で見ればメリットは十分あるよ
それも来年くらいの話になりそうだけど
320名前は開発中のものです。
2023/03/07(火) 18:03:51.11ID:OJB8Hm7j そっか
やっぱとりあえずは3でいいかな
乗り換えの時のために情報だけ何となく拾っとくくらいでいくわ
やっぱとりあえずは3でいいかな
乗り換えの時のために情報だけ何となく拾っとくくらいでいくわ
321名前は開発中のものです。
2023/03/07(火) 21:00:20.85ID:j3axOKFu https://www.reddit.com/r/godot/comments/11iixgj/psa_godot_4_has_many_issues_with_pixel_perfect/
4.0ピクセルパーフェクトにできない問題これか
直すのはかなり大変みたいだな
俺もまだ3.5でいいか
4.0ピクセルパーフェクトにできない問題これか
直すのはかなり大変みたいだな
俺もまだ3.5でいいか
322名前は開発中のものです。
2023/03/14(火) 17:51:36.50ID:miZ3euEs 3.5の時の3x3minimalテンプレ使いたいんだけど
4.0のAutotileの挙動がわけわからん
情報探そうにもあんまりヒットしないしみんなどうやって理解してるんだ
4.0のAutotileの挙動がわけわからん
情報探そうにもあんまりヒットしないしみんなどうやって理解してるんだ
323名前は開発中のものです。
2023/03/17(金) 02:33:23.47ID:+++OGmX4 タマランノウ (*≧∇≦)y─┛~~~~
324名前は開発中のものです。
2023/04/04(火) 16:06:52.42ID:4HFTSXCp ラベルノードのインスペクターからテキストに半角で(を入力すると表示されるけど全角の(を変換して半角にすると何も入力されない
4.0.1と4.0.2RC1で確認
4.0.1と4.0.2RC1で確認
325名前は開発中のものです。
2023/04/04(火) 17:46:08.09ID:nEpDfY8T バグ報告ならする場所が間違ってるぞ
https://github.com/godotengine/godot/issues
https://github.com/godotengine/godot/issues
326名前は開発中のものです。
2023/04/05(水) 21:16:03.85ID:hRcETCod ちょっと気になるくらいの事なんですけど
change_sceneを行う時、
切り替えたいシーンをシーンツリーにノード化して用意してからロードするのと、
直接 res:から読み込んだ場合で何か違いはあるんでしょうか?
change_sceneを行う時、
切り替えたいシーンをシーンツリーにノード化して用意してからロードするのと、
直接 res:から読み込んだ場合で何か違いはあるんでしょうか?
327名前は開発中のものです。
2023/04/12(水) 10:56:02.16ID:FPh8qGON unityからogodt戻ろうかな(´・ω・`)
unityはいちいち重いから困る
そもそもunity行った理由がアセットが豊富だからなんだけど、このデメリットってカバーできるかな?
unityはいちいち重いから困る
そもそもunity行った理由がアセットが豊富だからなんだけど、このデメリットってカバーできるかな?
328名前は開発中のものです。
2023/04/12(水) 10:56:33.97ID:FPh8qGON あと、ゲームはsteamとかitchあたりで出したい
329名前は開発中のものです。
2023/04/12(水) 11:15:12.28ID:FPh8qGON standard assetみたいなオフィシャルなやつあったらいいんだけどな
330名前は開発中のものです。
2023/04/12(水) 12:48:59.54ID:RdsS5G1w331名前は開発中のものです。
2023/04/12(水) 17:14:34.80ID:FPh8qGON >>330
そうそう、軌道も遅いしプロジェクトも数Gあるし、、、
大作になると便利なんだろうけど、パズル程度ならもう少し軽いほうがいいかなって
game a weekで交互に使っていく
覚えられるかな療法
そうそう、軌道も遅いしプロジェクトも数Gあるし、、、
大作になると便利なんだろうけど、パズル程度ならもう少し軽いほうがいいかなって
game a weekで交互に使っていく
覚えられるかな療法
332名前は開発中のものです。
2023/04/12(水) 17:27:36.94ID:FPh8qGON アセットストアは一向に充実しないわね(´・ω・`)
333名前は開発中のものです。
2023/04/12(水) 17:31:03.80ID:6145NizA 本家もわかってはいてもそこまでは手がまわらんのだろうな
ここはひとつユーザコミュニティサイドでそういうものを立ちあげていくしかない
ここはひとつユーザコミュニティサイドでそういうものを立ちあげていくしかない
334名前は開発中のものです。
2023/04/12(水) 18:08:22.00ID:FPh8qGON まあ自分で作るかitchあたりで探す感じかな
スターターアセットくらいはほしい
ホワイトボックスだけ作ってサクッと動かしたい場合とかあるし
スターターアセットくらいはほしい
ホワイトボックスだけ作ってサクッと動かしたい場合とかあるし
335名前は開発中のものです。
2023/04/13(木) 17:38:27.54ID:75RPW/ZO 一番使われてるアセットはゴドーくんの顔
336名前は開発中のものです。
2023/04/16(日) 20:35:58.45ID:pp7atYMv アニメーションプレイヤーのループボタンって
暗い方がオンだったのか
暗い方がオンだったのか
337名前は開発中のものです。
2023/04/20(木) 19:44:21.83ID:UvQQPaaA tilesetの編集ってgodot上でできましたか?
tiledなど使わないと駄目でしょうか?
tiledなど使わないと駄目でしょうか?
338名前は開発中のものです。
2023/04/26(水) 22:40:09.59ID:43QDxUvl AnimationTree経由で再生されたアニメーションだとanimation_finishedシグナルが出ないのな
339名前は開発中のものです。
2023/04/27(木) 07:06:59.32ID:Hvscjckf >>338
アニメーションの終わりでメソッド呼び出してemit_signalしてみるとか
アニメーションの終わりでメソッド呼び出してemit_signalしてみるとか
340名前は開発中のものです。
2023/04/27(木) 09:56:19.57ID:6ga1p8oR アニメーションに終了メソッド呼び出しを手作業で追加するのが面倒だからスクリプト書いた
4では治っているようだがバックポートはなさそう #70278
tool
extends EditorScript
func _run():
var path = "res://units/player.tscn"
var animation_name = "AttackSord"
var target_node = "/root/SystemNode"
var target_func = "animation_finished"
var scene = load(path).instance(0)
var player = scene.get_node("AnimationPlayer")
var animation = player.get_animation(animation_name)
# find last key time
var t = 0.0
for track_index in animation.get_track_count():
for key_index in animation.track_get_key_count(track_index):
t = max(t, animation.track_get_key_time(track_index, key_index))
# add method key
var index = animation.add_track(Animation.TYPE_METHOD, -1)
animation.track_set_path(index, target_node)
var params = { "method": target_func, "args": [animation_name] }
animation.track_insert_key(index, t, params, 1)
var packer = PackedScene.new()
if packer.pack(scene) == OK:
var e = ResourceSaver.save(path, packer)
if e != OK:
print(e)
4では治っているようだがバックポートはなさそう #70278
tool
extends EditorScript
func _run():
var path = "res://units/player.tscn"
var animation_name = "AttackSord"
var target_node = "/root/SystemNode"
var target_func = "animation_finished"
var scene = load(path).instance(0)
var player = scene.get_node("AnimationPlayer")
var animation = player.get_animation(animation_name)
# find last key time
var t = 0.0
for track_index in animation.get_track_count():
for key_index in animation.track_get_key_count(track_index):
t = max(t, animation.track_get_key_time(track_index, key_index))
# add method key
var index = animation.add_track(Animation.TYPE_METHOD, -1)
animation.track_set_path(index, target_node)
var params = { "method": target_func, "args": [animation_name] }
animation.track_insert_key(index, t, params, 1)
var packer = PackedScene.new()
if packer.pack(scene) == OK:
var e = ResourceSaver.save(path, packer)
if e != OK:
print(e)
341名前は開発中のものです。
2023/04/29(土) 21:08:55.73ID:GyoLXcxZ GDscriptで組むかC#にするか迷う
342名前は開発中のものです。
2023/05/04(木) 14:38:00.26ID:ZcQqa3h2343名前は開発中のものです。
2023/05/04(木) 18:40:07.62ID:Rk1rGymi これとか?
https://docs.godotengine.org/en/4.0/tutorials/math/vector_math.html#normalization
後はVector2かVector3のクラスリファレンス見るの良い
https://docs.godotengine.org/en/4.0/classes/class_vector2.html#class-vector2-method-normalized
https://docs.godotengine.org/en/4.0/classes/class_vector3.html#class-vector3-method-normalized
https://docs.godotengine.org/en/4.0/tutorials/math/vector_math.html#normalization
後はVector2かVector3のクラスリファレンス見るの良い
https://docs.godotengine.org/en/4.0/classes/class_vector2.html#class-vector2-method-normalized
https://docs.godotengine.org/en/4.0/classes/class_vector3.html#class-vector3-method-normalized
344名前は開発中のものです。
2023/05/04(木) 19:00:19.89ID:ZcQqa3h2 どもっす
vector2クラスのページにあったんですね
vector2クラスのページにあったんですね
345名前は開発中のものです。
2023/05/06(土) 10:58:54.30ID:0eDCXO8X こんちゃす
kinematicbodyは廃止されて、characterbodyになったんでしょうか
move_and_collideの使い方も微妙に変わってる感じ
kinematicbodyは廃止されて、characterbodyになったんでしょうか
move_and_collideの使い方も微妙に変わってる感じ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国連大使「日本が中国に武力行使すると脅しをかけたのは初めて」 国連事務総長に書簡★4 [♪♪♪★]
- 【芸能】44歳・池脇千鶴、激変ぶりにネット衝撃 「まるで別人…」「変化が凄い!!」の声 [冬月記者★]
- なぜ立花孝志氏の言葉は信じられたのか…"異例の逮捕"が浮き彫りにした「SNSの危険な病理」 [ぐれ★]
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★15 [BFU★]
- 竹中平蔵氏、万博は大成功だったと持論 批判していた人々にチクリ「反省の弁の一つも聞きたい」 [バイト歴50年★]
- 「国民的な年越し番組」だったのに「知らないアイドルばかり」の紅白をアラフォー以上はどう楽しめばいい? [muffin★]
- ゲーム中僕「ここ難しいなぁ」ポテチ食ってる友「んっ?ここ?ちょっと貸して」指チュッチュ
- 風呂入ったあとうんこしたら損した気分になるよな
- チェンソーマンの早川デンジとかいうキャラ
- 中国政府「私たちが怒っているのは日本国民じゃない」
- (っ◞‸◟c)
- 中国「ごめん、色々やりすぎた謝るから和解してほしい」高市首相「舐めてんの?」 [834922174]
