Godotエンジンは機能豊富な、クロスプラットフォームのゲームエンジンであり、2D・3Dゲームを単一のインターフェイスで製作することができます。
基本的なツールは一通り用意され、ユーザーはプログラムの再発明をすることなくゲーム製作に集中できます。
製作したゲームは主要なデスクトップ環境(Linux, MacOS, Windows)や、モバイル(Android, iOS)、Webベース(HTML5)環境にワンクリックで書き出せます。
GodotはMITライセンスの下、完全に自由でオープンソースです。
利用に関して特に制限はありませんし、利用料を請求することもありません。
エンジンのコードの最後の一行まで、ゲームは製作したユーザーのものです。
Godotは自主的なコミュニティによって開発されており、エンジンを期待にかなうものにするため、ユーザーの方々も自由に参加できます。
Godotは非営利団体Software Freedom Conservancyによって支援されております。
■公式サイト
https://godotengine.org/
■コミュニティ
https://godotengine.org/community/
■ドキュメント
https://docs.godotengine.org/ja/4.x/
★次スレは>>950がたててください
前スレ
【軽量】godot engine【無料】 part3
https://mevius.5ch.net/test/read.cgi/gamedev/1708131114/
【軽量】godot engine【無料】 part4
■ このスレッドは過去ログ倉庫に格納されています
2024/07/31(水) 07:46:19.20ID:fxP1vISb
750up
2025/07/05(土) 20:36:28.80ID:9nqmH4PC わしプログラム全くできないクソ雑魚ナメクジなんだけど、cursorとGodot のmcp使って2dのロックマンとかゼルダくらいなら何とか作れるようになってあることに気が付いたんや
aiに作らせる場合、設計仕様を遵守させないといけないと言うことに
ルールを設定して指示出して裏でタルコフのレイドいって戻ってきたら大体完成してるのすごい楽やけど、そのうちpcとか乗っ取られるんやろな
aiに作らせる場合、設計仕様を遵守させないといけないと言うことに
ルールを設定して指示出して裏でタルコフのレイドいって戻ってきたら大体完成してるのすごい楽やけど、そのうちpcとか乗っ取られるんやろな
751名前は開発中のものです。
2025/07/10(木) 02:15:24.70ID:IZ3oEbIl ポン出しのゲームの価値はほんと暴落したよね
752名前は開発中のものです。
2025/07/10(木) 08:13:19.16ID:B/u6Yh7U ポン出しってなに?
味の素のだし?
味の素のだし?
753名前は開発中のものです。
2025/07/10(木) 12:24:40.56ID:CVdefut2 当たるか当たらないか、問題はそれだけだ。
754名前は開発中のものです。
2025/08/01(金) 11:05:55.88ID:lJKT82pJ EA Battlefield 6 - Battlefield Portal で提供される
ユーザーレベルエディタに Godot Engine が使用される模様
EA や DICE Frostbite エンジンがどの程度 Godot Engine に関与するのかは不明
ユーザーレベルエディタに Godot Engine が使用される模様
EA や DICE Frostbite エンジンがどの程度 Godot Engine に関与するのかは不明
755名前は開発中のものです。
2025/08/01(金) 12:20:22.92ID:fXkym6nE ああこれGODOT大勝利すぎるよな
こんな大手が勝手に利用実績作ってくれるんだから
ユーザー作成コンテンツ用のツールとしてのポテンシャルは他のエンジンよりも高いのかもしれないな、主にライセンスのおかげだと思うけど
こんな大手が勝手に利用実績作ってくれるんだから
ユーザー作成コンテンツ用のツールとしてのポテンシャルは他のエンジンよりも高いのかもしれないな、主にライセンスのおかげだと思うけど
756名前は開発中のものです。
2025/08/05(火) 05:48:14.68ID:vWykVdg0 gemini cliって何に使える?
757名前は開発中のものです。
2025/08/05(火) 19:19:30.34ID:gM/N/ahx それこそ gemini さんご本人に聞いてみたらいい案件
煽りとかでなくわりとマジレスで
煽りとかでなくわりとマジレスで
758名前は開発中のものです。
2025/08/05(火) 21:34:35.64ID:u4t7x4Kh godot製のゲーム見るとパッとしないな
3Dに関してもちょっとしたものでもUnrealの方がリッチに見える
3Dに関してもちょっとしたものでもUnrealの方がリッチに見える
759名前は開発中のものです。
2025/08/05(火) 22:02:20.32ID:EERayGCm まあAAA級の3DやりたいならUnrealだと思うけど
ワイはローポリだからGodotで十分
ワイはローポリだからGodotで十分
760名前は開発中のものです。
2025/08/07(木) 11:31:23.67ID:0nWRJ2Xs 自分のゲームとの付き合い方が、スキマ時間の暇つぶしだからなぁ
ミニゲーム作りだよね
ミニゲーム作りだよね
761名前は開発中のものです。
2025/08/07(木) 15:52:53.47ID:xUGa67EJ Unrealで簡単に綺麗な3Dが作れるからそうするだけであって
作るゲームとしてはミニゲームだな
作るゲームとしてはミニゲームだな
762名前は開発中のものです。
2025/08/09(土) 11:14:01.02ID:4RwU/Lbg 自分が楽しみたいから作りたい
763名前は開発中のものです。
2025/08/09(土) 11:48:00.31ID:4RwU/Lbg アイディアって、発想の時点でガチガチに計画練ってみる?
取り掛からないと駄目な部分は見えてこないかな?
これ最高やん→作り始める→あれ、このゲームシステム整合性取れないな→挫折
何とか形にするのってむずいよね
取り掛からないと駄目な部分は見えてこないかな?
これ最高やん→作り始める→あれ、このゲームシステム整合性取れないな→挫折
何とか形にするのってむずいよね
764名前は開発中のものです。
2025/08/09(土) 13:47:17.98ID:apBax/Mj 基礎が(できて)ない人の典型的な症状ですね、基礎から学んでください
自分を見ればわかると思いますが、ゼロに何を足しても掛けてもゼロです、永遠に
自分を見ればわかると思いますが、ゼロに何を足しても掛けてもゼロです、永遠に
765名前は開発中のものです。
2025/08/09(土) 13:54:42.79ID:Vj+QsGrf ゼロに足したら何か変化があるじゃろっていうツッコミ待ち
766名前は開発中のものです。
2025/08/09(土) 14:07:15.70ID:XFNG7x17 ゼロに足し算すれば変化が起こることを知らない時点で算数の基礎が出来てないのだ
767名前は開発中のものです。
2025/08/09(土) 14:56:31.83ID:SHBIrPbt 加算なら「なぜ誰でも出来る事が世界でたった1人だけ出来ないのか」説明が付かない
0*n(乗算)だよなあ
0*n(乗算)だよなあ
768名前は開発中のものです。
2025/08/09(土) 17:54:13.25ID:BCyByyxf とにかく試作品の段階でも公開して、フィードバック貰いながら完成させた方が良いかもね
完成しない原因は期限も決まってないし、ガントチャートとか作ってタスクの総数も見積もってないからでしょう
小規模でも完成させて、後から自分が注力したいところを作り込んで行けば良いんじゃないのかな
よく分かんないけど
完成しない原因は期限も決まってないし、ガントチャートとか作ってタスクの総数も見積もってないからでしょう
小規模でも完成させて、後から自分が注力したいところを作り込んで行けば良いんじゃないのかな
よく分かんないけど
769名前は開発中のものです。
2025/08/09(土) 20:20:36.62ID:4RwU/Lbg いうて完璧にゲームシステムをイメージ出来てるもんなの?
770名前は開発中のものです。
2025/08/09(土) 22:07:32.11ID:tyEFv4Yu テスト用ピログラムを組むんじゃ~
771名前は開発中のものです。
2025/08/10(日) 07:40:27.65ID:QzlW7CNX772名前は開発中のものです。
2025/08/10(日) 10:31:41.78ID:Om3DkguD せやね
テスト感覚でじゃんじゃん作って、その100のうち1つでも当たればいいって感じでやればいいんだけどね
失敗続きだから失敗しない計画というのを建てようとしてるんだが、そんなものはないんだよな
ブラッシュアップ指定っくもんだし
テスト感覚でじゃんじゃん作って、その100のうち1つでも当たればいいって感じでやればいいんだけどね
失敗続きだから失敗しない計画というのを建てようとしてるんだが、そんなものはないんだよな
ブラッシュアップ指定っくもんだし
773名前は開発中のものです。
2025/08/10(日) 12:09:38.26ID:QzlW7CNX 実験は実験だから上手くいっても行かなくてもそれ自体に価値があると思う
実装する中で再利用可能なパーツを作っておいて、いかに実験の期間を短くするかが重要なのかもね
実装する中で再利用可能なパーツを作っておいて、いかに実験の期間を短くするかが重要なのかもね
774名前は開発中のものです。
2025/08/10(日) 12:54:25.04ID:Om3DkguD うん テストを増やす
775名前は開発中のものです。
2025/08/10(日) 18:42:28.04ID:OvLQ8W5U 学力テストも問題を見てココは授業に出た、ココは教科書に書いてあった、ココは書いてないけど
テストに出るぞと言われたと設問に対して答えを覚えてる状態でないと殆ど答えを書けない
それと一緒で過去に習ったチュートリアル、ブログ、数式が、プログラムを考えた時に
記憶と紐付けされ引き出せないと車輪の再発明をする事になる
そういう状態が起きないなら、脳の中期・長期記憶がパーになってる
テストに出るぞと言われたと設問に対して答えを覚えてる状態でないと殆ど答えを書けない
それと一緒で過去に習ったチュートリアル、ブログ、数式が、プログラムを考えた時に
記憶と紐付けされ引き出せないと車輪の再発明をする事になる
そういう状態が起きないなら、脳の中期・長期記憶がパーになってる
776名前は開発中のものです。
2025/08/10(日) 19:05:18.47ID:bcR0zlWI777名前は開発中のものです。
2025/08/10(日) 20:10:43.08ID:OvLQ8W5U >>776
答えが書けるのは式を覚えてるからで、記憶を使って覚えた事をツールの様に転換しているから
ハサミやナイフのように使える
そもそも完全にトッカカリになる記憶がない物は人はイメージする事はおろか作る事すら出来ない
答えが書けるのは式を覚えてるからで、記憶を使って覚えた事をツールの様に転換しているから
ハサミやナイフのように使える
そもそも完全にトッカカリになる記憶がない物は人はイメージする事はおろか作る事すら出来ない
778名前は開発中のものです。
2025/08/10(日) 21:23:22.70ID:bcR0zlWI779名前は開発中のものです。
2025/08/10(日) 21:29:32.99ID:CqwsPPLE スターデューバレーは5年、アンダーテールは2年半、ヴァンサバでさえ1年間開発に費やしている
しかもこれらのゲームの開発者は仕事してなくて一日中打ち込んでこの期間
それでもここの皆んなはゲーム開発を続けるのかい?
しかもこれらのゲームの開発者は仕事してなくて一日中打ち込んでこの期間
それでもここの皆んなはゲーム開発を続けるのかい?
780名前は開発中のものです。
2025/08/10(日) 21:41:26.76ID:OvLQ8W5U ジジババだと1+1を考えてる間に何と何を足すのかすら覚えてないから永久に足し算が出来ない
痴呆症は数分前の事すら覚えてない
毎日同じ事をずっと聞いてたのが痴呆症だったとしても不思議だとは思わない
痴呆症は数分前の事すら覚えてない
毎日同じ事をずっと聞いてたのが痴呆症だったとしても不思議だとは思わない
781名前は開発中のものです。
2025/08/10(日) 23:05:33.57ID:2TY9GzGW 何億年追いかけても達成できない夢なんていくらでもあるのに
五年で達成できる夢なら追う価値は十分にあるよなぁ
オレはそういう考え方をするタイプ
五年で達成できる夢なら追う価値は十分にあるよなぁ
オレはそういう考え方をするタイプ
782名前は開発中のものです。
2025/08/11(月) 00:04:13.68ID:jlHor8xa 人に迷惑掛けないなら合法なら何してもいい
ただ自分が嫌な事やりたくない事から逃げる為に
他人を利用してるだけなのは解せん
ただ自分が嫌な事やりたくない事から逃げる為に
他人を利用してるだけなのは解せん
783名前は開発中のものです。
2025/08/11(月) 06:03:45.23ID:INdy+2hj ワナビは精神疾患の安定剤代わりに質問して答えて貰ってうれションしてるだけだからな
784名前は開発中のものです。
2025/08/11(月) 14:43:59.60ID:b35RjK+p ここでお前らが質問をしてのんびり回答を待ってる間に俺は一本仕上げたよ
ゲームの完成度はとても低いが日々やってることがいつか結実すると信じてるからひたすら作ってはリリースしていくつもり
ゲームの完成度はとても低いが日々やってることがいつか結実すると信じてるからひたすら作ってはリリースしていくつもり
785名前は開発中のものです。
2025/08/12(火) 09:47:49.44ID:veliXmTO グリグリさん?
786名前は開発中のものです。
2025/08/12(火) 11:40:21.32ID:D8aEnD5Q 続けることこそ才能、これぞ真理よ
787名前は開発中のものです。
2025/08/12(火) 13:39:47.57ID:veliXmTO ゲーム作り復帰したけど、わくわくするねやっぱり
完成させるぞ
chatgptで作れるいうけど、他人の書いたコードとかワケワカランなるな
完成させるぞ
chatgptで作れるいうけど、他人の書いたコードとかワケワカランなるな
788名前は開発中のものです。
2025/08/12(火) 13:56:25.22ID:wbfGEfjA ちゃんとした雛形のコアスクリプトがあるなら理解しようとするけど
自分以外の奴のコードなんか余程じゃないと理解しようとする気になれんわそんなもん
昔それやるハメになって胃がやられるかと思ったわ
自分以外の奴のコードなんか余程じゃないと理解しようとする気になれんわそんなもん
昔それやるハメになって胃がやられるかと思ったわ
789名前は開発中のものです。
2025/08/12(火) 19:29:14.19ID:dzjkpfKW ChatGPTにソースコード生成してもらうなら処理も説明してくれるだろ
ネットで拾ったプロジェクトでさえzipで投げて丸ごと解析すらしてくれる
ネットで拾ったプロジェクトでさえzipで投げて丸ごと解析すらしてくれる
790名前は開発中のものです。
2025/08/13(水) 07:37:43.99ID:o1mYTevh791名前は開発中のものです。
2025/08/13(水) 12:07:29.01ID:o1mYTevh 頭固すぎてプログラミング辛い
やわやわしたい
やわやわしたい
792名前は開発中のものです。
2025/08/13(水) 14:37:02.30ID:o1mYTevh センスがないのがきちーな
793名前は開発中のものです。
2025/08/14(木) 13:10:48.37ID:Nb2iwLU4 衝突相手のオブジェクトがどれか調べる方法ってある?
名前で判定してるんだけど名前って変更することあるし、底に依存する設計って良くないのかなとか
衝突相手の名前がenemyだったら、if area.name = "enemy":処理
みたいな感じにしてる
名前で判定してるんだけど名前って変更することあるし、底に依存する設計って良くないのかなとか
衝突相手の名前がenemyだったら、if area.name = "enemy":処理
みたいな感じにしてる
794名前は開発中のものです。
2025/08/14(木) 14:34:30.06ID:p2Gn9odV 適切に管理してる限りは名前でも問題ないのでは?
instance IDで判定すれば名前が重複した場合の様な誤判定はなくせる
enemyに属する種別として判定したいのであればEnemyクラスにして型で判定する
またはグループで管理する
instance IDで判定すれば名前が重複した場合の様な誤判定はなくせる
enemyに属する種別として判定したいのであればEnemyクラスにして型で判定する
またはグループで管理する
795名前は開発中のものです。
2025/08/14(木) 15:24:38.14ID:EPDo1MlI ダメだ。5chはソース貼るとNGワードに引っ掛かるんだな
クラス名での判定処理が手軽なんじゃない?
class_nameの形で宣言するやつ
5chはソース貼れないからDiscordで聞いた方がいいと思う
クラス名での判定処理が手軽なんじゃない?
class_nameの形で宣言するやつ
5chはソース貼れないからDiscordで聞いた方がいいと思う
796名前は開発中のものです。
2025/08/14(木) 16:37:05.46ID:Nb2iwLU4 ありがとう
名前でやってみるわ
別の変更することはそうそうないんだが、スクリプトでクラス名設定して、そちらを使ったほうがまあ後々便利そうではある
ただ、使いもしないものを考えても無駄だしな
名前でやってみるわ
別の変更することはそうそうないんだが、スクリプトでクラス名設定して、そちらを使ったほうがまあ後々便利そうではある
ただ、使いもしないものを考えても無駄だしな
797名前は開発中のものです。
2025/08/14(木) 16:58:20.13ID:p2Gn9odV 単純に1対1の接触判定なら名前で十分なんだけど
複数の敵だとか弾だとか種別で振り分ける要件があるなら型で判定するのが楽
その後の種別毎の処理もクラスに持たせれば尚捗る
後から名前判定を型判定に切り替えようと思った場合でも必要な修正量は少ないと思うので
そういう方法があると知ってるだけでも十分よ
複数の敵だとか弾だとか種別で振り分ける要件があるなら型で判定するのが楽
その後の種別毎の処理もクラスに持たせれば尚捗る
後から名前判定を型判定に切り替えようと思った場合でも必要な修正量は少ないと思うので
そういう方法があると知ってるだけでも十分よ
798名前は開発中のものです。
2025/08/16(土) 10:01:50.25ID:yNHWyeJg tonkusu
799名前は開発中のものです。
2025/08/16(土) 10:09:34.14ID:yNHWyeJg もう何年も全く上達しとらん
800名前は開発中のものです。
2025/08/16(土) 22:40:24.94ID:grW1btj7 しゃっ、なぜか突然やる気出てきた! 一本なんか作ろっと
801名前は開発中のものです。
2025/08/17(日) 00:26:07.73ID:R99XdFlR プラットフォーマー?シューティング?
いずれにせよゲーム作るのは大変
いずれにせよゲーム作るのは大変
802名前は開発中のものです。
2025/08/17(日) 06:08:18.66ID:ZbAJcgXG aiでインディーゲー制作終わる?
803名前は開発中のものです。
2025/08/17(日) 06:48:30.88ID:ZmztiPxu 終わってるのはお前の頭だ
804名前は開発中のものです。
2025/08/17(日) 07:00:20.34ID:ZbAJcgXG はい
805名前は開発中のものです。
2025/08/17(日) 09:26:56.65ID:OtXByaPB はいじゃないが
806名前は開発中のものです。
2025/08/17(日) 15:05:41.75ID:9AmcoDI2 受験で言ったら10数年浪人してるのと同じなのに未だに諦めないのは意味不
このままだと10年後も収入ゼロ行進が続くんじゃないの?
このままだと10年後も収入ゼロ行進が続くんじゃないの?
807名前は開発中のものです。
2025/08/19(火) 09:10:38.40ID:3t3CLEnJ プログラミング苦手なんだが1日1時間からやりゃいいかな?
808名前は開発中のものです。
2025/08/19(火) 10:35:35.56ID:JdP3e7K/ 数学の勉強から
809名前は開発中のものです。
2025/08/19(火) 11:31:29.44ID:GZsC++n5 落ちこぼれの学年最下位は1日何時間勉強したら偏差値50の平均的な大学に受かると思う?
810名前は開発中のものです。
2025/08/19(火) 13:36:31.30ID:uLkJ1eHB 下準備とか要らんから作りたいものがあるならさっさと作りなさい
811名前は開発中のものです。
2025/08/19(火) 18:25:53.26ID:jJatJopQ 作りたいものがあるならBrackeysのチュートリアル動画で今日明日中にGDScriptは終えるべき
作りたいものがないなら何もしなくていい
基本を終えたらChatGPTに「これがやりたい」と伝えればソースコードくれる
ソースコードの意味がわからなかったら説明して貰えばいい
それでもわからなかったらもっと簡単な実装に変えてくれと言えばいい
作りたいものがないなら何もしなくていい
基本を終えたらChatGPTに「これがやりたい」と伝えればソースコードくれる
ソースコードの意味がわからなかったら説明して貰えばいい
それでもわからなかったらもっと簡単な実装に変えてくれと言えばいい
812名前は開発中のものです。
2025/08/20(水) 06:35:13.54ID:sxbQP0Ah connectのcallableってチョウ噛み砕くとつまりなに?
813名前は開発中のものです。
2025/08/20(水) 06:38:33.56ID:w6+HP3Ao シグナル発呼時に呼ばれる関数名
814名前は開発中のものです。
2025/08/20(水) 06:44:18.64ID:w6+HP3Ao あ?connect張った側だと着呼か
まあCallableクラスは関数を表す
まあCallableクラスは関数を表す
815名前は開発中のものです。
2025/08/20(水) 10:41:04.62ID:sxbQP0Ah ありがとう
思い出してきた
ってかノードのプロパティにアクセスしてから、カンス名だけ指定したほうがシンプルかなぁ
collableの使い所が分からん
思い出してきた
ってかノードのプロパティにアクセスしてから、カンス名だけ指定したほうがシンプルかなぁ
collableの使い所が分からん
816名前は開発中のものです。
2025/08/20(水) 11:26:23.53ID:w6+HP3Ao 自分は1ファイルで見通せる方が好きなのでコードで接続してるが
通常はノードで設定した方が設定状況を纏めて見れるし
エディタに接続アイコンが表示されるのでシンプルかつ見やすいと思う
主にシグナル接続をコードで書くのは自前でシグナルを定義した場合になると思うが
これもグローバルクラスにすれば標準クラスと同様にノードで設定できる様になる
connect以外でのCallableの使い所はラムダ関数を使う場合や関数内関数での使用になるかな
通常はノードで設定した方が設定状況を纏めて見れるし
エディタに接続アイコンが表示されるのでシンプルかつ見やすいと思う
主にシグナル接続をコードで書くのは自前でシグナルを定義した場合になると思うが
これもグローバルクラスにすれば標準クラスと同様にノードで設定できる様になる
connect以外でのCallableの使い所はラムダ関数を使う場合や関数内関数での使用になるかな
817名前は開発中のものです。
2025/08/20(水) 11:26:50.72ID:8BIAqddk # connect() の Callable とは?
Godot 4.x から connect() の仕様が変わり、シグナル接続時に Callable クラスを使うようになりました。
記述例(4.x):
button.connect("pressed", Callable(self, "_on_button_pressed"))
Callable は「あるオブジェクトの特定のメソッドを呼び出すための参照」を表すクラスです。
記述例のように connect() によるシグナル接続時に Calalble コンストラクタの第一引数に実行したいメソッドを持つオブジェクト、第二引数に実行したいメソッドを記述します。
これらの引数はそれぞれ第一引数はオブジェクト参照、第二引数はそのオブジェクトが持つメソッド名(文字列)となります。
Godot 4.x では以下のような 3.x の (target, method_name) 形式は廃止され、第2引数に Callable を渡すことが必須になりました。
記述例(3.x) ※4.x 非対応:
button.connect("pressed", self, "_on_button_pressed")
また上記の記述例(4.x)は以下のショートハンドでも記述可能です。
記述例( 4.x ショートハンドver.)
button.pressed.connect(self._on_button_pressed)
これは内部的に Callable(self, "_on_button_pressed") を生成します。
Godot 公式もこの「Signal プロパティ経由」の記述方法を推奨しており、
シンプルかつ Callable を意識せずに利用できるため、実務でもこちらを使うのが一般的です。
Godot 4.x から connect() の仕様が変わり、シグナル接続時に Callable クラスを使うようになりました。
記述例(4.x):
button.connect("pressed", Callable(self, "_on_button_pressed"))
Callable は「あるオブジェクトの特定のメソッドを呼び出すための参照」を表すクラスです。
記述例のように connect() によるシグナル接続時に Calalble コンストラクタの第一引数に実行したいメソッドを持つオブジェクト、第二引数に実行したいメソッドを記述します。
これらの引数はそれぞれ第一引数はオブジェクト参照、第二引数はそのオブジェクトが持つメソッド名(文字列)となります。
Godot 4.x では以下のような 3.x の (target, method_name) 形式は廃止され、第2引数に Callable を渡すことが必須になりました。
記述例(3.x) ※4.x 非対応:
button.connect("pressed", self, "_on_button_pressed")
また上記の記述例(4.x)は以下のショートハンドでも記述可能です。
記述例( 4.x ショートハンドver.)
button.pressed.connect(self._on_button_pressed)
これは内部的に Callable(self, "_on_button_pressed") を生成します。
Godot 公式もこの「Signal プロパティ経由」の記述方法を推奨しており、
シンプルかつ Callable を意識せずに利用できるため、実務でもこちらを使うのが一般的です。
818名前は開発中のものです。
2025/08/20(水) 11:28:56.28ID:8BIAqddk # なぜ Callable を経由するのか?
簡潔にまとめると、以下のメリットがあります。
1. 安全性(未定義メソッドを is_valid() で事前検出可能)
2. IDE 補完・リファクタリング対応(文字列指定ではできなかった恩恵)
3. 統一性(シグナル以外でも「関数参照」として利用可能)
4. 柔軟性(ラムダでシンプルに書ける)
5. 将来性(Godot 4.x 以降の標準記法)
簡潔にまとめると、以下のメリットがあります。
1. 安全性(未定義メソッドを is_valid() で事前検出可能)
2. IDE 補完・リファクタリング対応(文字列指定ではできなかった恩恵)
3. 統一性(シグナル以外でも「関数参照」として利用可能)
4. 柔軟性(ラムダでシンプルに書ける)
5. 将来性(Godot 4.x 以降の標準記法)
819名前は開発中のものです。
2025/08/21(木) 07:12:58.02ID:/HImpd/9 tonkusu
820名前は開発中のものです。
2025/08/21(木) 10:04:41.30ID:/HImpd/9 プログラミングっていきなり答え見たほうがいいのか?
821名前は開発中のものです。
2025/08/21(木) 10:26:48.86ID:OYDY07jx 見ないで答えるにはそれを知っていなければならないから最初は必ず見る
クイズだとしても知識を持っていなければ答えられない
パズルだとしてもルールを知らなければ考えられない
プログラムとはコンピュータとの対話言語を使った会話
言葉を覚えると言う意味では他言語とセオリーは変わらない
曖昧さが少ない分覚えやすいまである
クイズだとしても知識を持っていなければ答えられない
パズルだとしてもルールを知らなければ考えられない
プログラムとはコンピュータとの対話言語を使った会話
言葉を覚えると言う意味では他言語とセオリーは変わらない
曖昧さが少ない分覚えやすいまである
822名前は開発中のものです。
2025/08/21(木) 12:09:28.51ID:Ajf2SJxV 最後はアルゴリズムだからなぁ
823名前は開発中のものです。
2025/08/21(木) 12:24:29.89ID:OYDY07jx ゲームにおけるデータ処理なら必要なアルゴリズムは辞典読めば事足りると思う
ゲームに必要な物ならある程度はエンジンが機能を提供してくれる
他がやってない独創的な処理を実装したいなら頭悩ますしかないね
ゲームに必要な物ならある程度はエンジンが機能を提供してくれる
他がやってない独創的な処理を実装したいなら頭悩ますしかないね
824名前は開発中のものです。
2025/08/21(木) 13:27:58.90ID:zThVp00O 実装したい機能について考え方さえわからない場合も多い
Godotではないが答えを見なければ今でも簡単な当たり判定すら実装できていなかっただろうと思う
Godotではないが答えを見なければ今でも簡単な当たり判定すら実装できていなかっただろうと思う
825名前は開発中のものです。
2025/08/21(木) 14:05:07.38ID:/HImpd/9 キャラクターをスイッチしたいのだけども
アクティブキャラだけ操作権があって、別キャラと衝突したらそっちに操作権が移る
シグナルはキャラA,B共にarea2dを使っていてあらかじめ有効化している
シグナルのオンオフをいちいち切り替えるのは面倒そうなんで
a,b両方から衝突のシグナルが飛んでくるんで、フィルタリングしたい
フィルタリングの条件分岐に必要な要素って何があるかな?
現在操作キャラ(a)からのシグナルを無視して、それ以外(b)からのシグナルが来たら、bに切り替えるって流れかな
オンオフで対応したほうがシンプルでいいかな
こういう論理的思考が壊滅的に出来ないみたい
練習方法ない?
アクティブキャラだけ操作権があって、別キャラと衝突したらそっちに操作権が移る
シグナルはキャラA,B共にarea2dを使っていてあらかじめ有効化している
シグナルのオンオフをいちいち切り替えるのは面倒そうなんで
a,b両方から衝突のシグナルが飛んでくるんで、フィルタリングしたい
フィルタリングの条件分岐に必要な要素って何があるかな?
現在操作キャラ(a)からのシグナルを無視して、それ以外(b)からのシグナルが来たら、bに切り替えるって流れかな
オンオフで対応したほうがシンプルでいいかな
こういう論理的思考が壊滅的に出来ないみたい
練習方法ない?
826名前は開発中のものです。
2025/08/21(木) 14:59:17.38ID:OYDY07jx 自分が理解できない物を論理的に考えるのは無理なのでまず自分が理解できる所まで単純化する
コンピュータを指示通りに動く人として捉える
相手に自分の考えを伝えるには相手が理解できる言葉を使う
相手がどこまで理解できているかを想像する
>>325の例題を要約すると以下の感じであってるかな?
「アクティブ時にのみ操作可能なキャタクターが複数存在する」
「操作キャラクターが操作可能キャラクターに衝突すると操作権が衝突した相手に移る」
相手が理解しやすい単純な説明を心がける
まず概要を伝えて会話する為の基礎を築く
シグナルとかArea2Dだとか複雑な話題はなくて良い
相手と共通認識ができたらより複雑な話題へ移る
こんな感じで物事を単純化してそこから徐々に複雑化していく
練習方法としては相手が知らない事を説明する事、仕様書を書いて読んで貰う事かな?
場を作るのが難しいけどディスカッションを多数こなすのが良いのではないかな
コンピュータを指示通りに動く人として捉える
相手に自分の考えを伝えるには相手が理解できる言葉を使う
相手がどこまで理解できているかを想像する
>>325の例題を要約すると以下の感じであってるかな?
「アクティブ時にのみ操作可能なキャタクターが複数存在する」
「操作キャラクターが操作可能キャラクターに衝突すると操作権が衝突した相手に移る」
相手が理解しやすい単純な説明を心がける
まず概要を伝えて会話する為の基礎を築く
シグナルとかArea2Dだとか複雑な話題はなくて良い
相手と共通認識ができたらより複雑な話題へ移る
こんな感じで物事を単純化してそこから徐々に複雑化していく
練習方法としては相手が知らない事を説明する事、仕様書を書いて読んで貰う事かな?
場を作るのが難しいけどディスカッションを多数こなすのが良いのではないかな
827名前は開発中のものです。
2025/08/21(木) 15:00:29.64ID:OYDY07jx828名前は開発中のものです。
2025/08/21(木) 15:57:31.56ID:OYDY07jx 必要なのかどうか判らんが>>825の制御方法を回答するなら以下かな
操作可能キャラクターに現在操作権があるかどうかを判定するアクティブフラグを持たせる
操作はフラグが有効な場合にのみ処理する
衝突シグナルの発呼はフラグが有効な場合にのみ処理する
衝突シグナル発呼後にフラグを無効にする
衝突シグナル着呼時にフラグを有効にする
操作可能キャラクターに現在操作権があるかどうかを判定するアクティブフラグを持たせる
操作はフラグが有効な場合にのみ処理する
衝突シグナルの発呼はフラグが有効な場合にのみ処理する
衝突シグナル発呼後にフラグを無効にする
衝突シグナル着呼時にフラグを有効にする
829名前は開発中のものです。
2025/08/21(木) 17:37:16.04ID:zThVp00O isTouchActiveみたいなbool値でシグナルの受信を管理する必要があるのかと思ったらこれでもいけるらしい
ChatGPTにリファクタリングして貰ったらソースがかなり短くなった
ttps://pastebin.com/YyjtJXCC
ソース冒頭のGameManagerはシングルトンとしてAutoLoadに設定、プロパティはactive_charのみ
このactive_charはゲーム内でアクティブなキャラを一意にする意図
プレイヤーノード構成
CharacterBody2D
├Area2D
│ └CollisionShape2D
└Sprite2D
ChatGPTにリファクタリングして貰ったらソースがかなり短くなった
ttps://pastebin.com/YyjtJXCC
ソース冒頭のGameManagerはシングルトンとしてAutoLoadに設定、プロパティはactive_charのみ
このactive_charはゲーム内でアクティブなキャラを一意にする意図
プレイヤーノード構成
CharacterBody2D
├Area2D
│ └CollisionShape2D
└Sprite2D
830名前は開発中のものです。
2025/08/21(木) 18:26:36.99ID:OYDY07jx ゲームマネージャがアクティブなキャラクターを保持する方式だね
その方が今誰がアクティブなのかが即判るので良いかもね
一つ気になる点としてはAの処理とBの処理の処理順でAが先に処理される場合
キャラクターAがBに衝突した際にアクティブキャラクターをBに更新してしまうと
その後のB側の衝突処理でBは自分がアクティブキャラクターと認識してAに更新してしまうのではと思う
さてどうかな?
仕様を誰でも判りやすい言語化するのはAIとの対話にも役立つと思うよ
その方が今誰がアクティブなのかが即判るので良いかもね
一つ気になる点としてはAの処理とBの処理の処理順でAが先に処理される場合
キャラクターAがBに衝突した際にアクティブキャラクターをBに更新してしまうと
その後のB側の衝突処理でBは自分がアクティブキャラクターと認識してAに更新してしまうのではと思う
さてどうかな?
仕様を誰でも判りやすい言語化するのはAIとの対話にも役立つと思うよ
831名前は開発中のものです。
2025/08/21(木) 18:35:03.35ID:OYDY07jx ちょっと訂正、後から文章足したからキャラクターAの登場がずれた
キャラクターAとBが存在する時にAとBの処理順がAが先に処理される場合
AがBに衝突した際にアクティブキャラクターをBに更新してしまうと
その後のB側の衝突処理でBは自分がアクティブキャラクターと認識してAに更新してしまうのではと思う
キャラクターAとBが存在する時にAとBの処理順がAが先に処理される場合
AがBに衝突した際にアクティブキャラクターをBに更新してしまうと
その後のB側の衝突処理でBは自分がアクティブキャラクターと認識してAに更新してしまうのではと思う
832名前は開発中のものです。
2025/08/21(木) 19:10:14.51ID:zThVp00O おっしゃる通りキャラAからキャラBにタッチした時にB側の_on_area_enteredが実行されて再度キャラAに操作権が渡る可能性があるため(物理サーバーがシグナルを発火させる順番に依存するため100%ではない)
「アクティブ側だけが切替処理を実行」「同じ物理フレームでの多重切替を禁止」の処理を盛り込む必要ありです
流石です
「アクティブ側だけが切替処理を実行」「同じ物理フレームでの多重切替を禁止」の処理を盛り込む必要ありです
流石です
833名前は開発中のものです。
2025/08/21(木) 19:31:45.99ID:OYDY07jx AIが使えるとかなり捗るね
自分の上げた>>828方式だと発呼するのが一人だけなのが保証されているので複数による切り替えは発生しない
>>829方式の場合はもうひと工夫が必要
これもやり方は色々あるけど一つ方法を挙げておくと
即時にアクティブキャラクターを更新するのが問題の発生原因なので更新処理を遅延させる
call_deferredを使用すると現フレームと次フレームの間に処理が行われるのでこれを利用する
より具体的にはアクティブキャラクター更新処理を関数化してcall_deferredで呼ぶ
自分で使うならこう書くんだけど行儀が良くないコードなので実用するなら適宜直してね
(func():gm.active_char = other_char).call_deferred()
自分の上げた>>828方式だと発呼するのが一人だけなのが保証されているので複数による切り替えは発生しない
>>829方式の場合はもうひと工夫が必要
これもやり方は色々あるけど一つ方法を挙げておくと
即時にアクティブキャラクターを更新するのが問題の発生原因なので更新処理を遅延させる
call_deferredを使用すると現フレームと次フレームの間に処理が行われるのでこれを利用する
より具体的にはアクティブキャラクター更新処理を関数化してcall_deferredで呼ぶ
自分で使うならこう書くんだけど行儀が良くないコードなので実用するなら適宜直してね
(func():gm.active_char = other_char).call_deferred()
834名前は開発中のものです。
2025/08/22(金) 12:59:11.02ID:5H9qw/cT ありがとう
じっくり読んで作るナリよ
やっぱりアクティブキャラだけシグナルを発する方式が安全なんすかね?
じっくり読んで作るナリよ
やっぱりアクティブキャラだけシグナルを発する方式が安全なんすかね?
835名前は開発中のものです。
2025/08/22(金) 13:20:20.86ID:hykeI/+Z 今回上がった>>828,829どちらでも多重切り替えの対策をしていれば安全性は変わらない
作る人が作りやすい間違えにくい方式を選べば良い
現在のアクティブキャラを頻繁に知る必要があるなら>>829の方が良いと思う
>>828の場合は対象キャラクターの全件走査が必要になる
>>828のメリットはゲームマネージャ不要なので携わるクラスやファイルが少なくなる事かな
全件走査の件はグローバルクラス化して静的変数を持たせればゲームマネージャを用意せずとも同じ結果を得られる
やり方は色々存在する
尚現処理では2体以上のキャラクターと同時に衝突した場合の切り替え対象が不定となるので
優先順位が必要な場合は何らかの追加処理が必要
作る人が作りやすい間違えにくい方式を選べば良い
現在のアクティブキャラを頻繁に知る必要があるなら>>829の方が良いと思う
>>828の場合は対象キャラクターの全件走査が必要になる
>>828のメリットはゲームマネージャ不要なので携わるクラスやファイルが少なくなる事かな
全件走査の件はグローバルクラス化して静的変数を持たせればゲームマネージャを用意せずとも同じ結果を得られる
やり方は色々存在する
尚現処理では2体以上のキャラクターと同時に衝突した場合の切り替え対象が不定となるので
優先順位が必要な場合は何らかの追加処理が必要
836名前は開発中のものです。
2025/08/22(金) 19:05:13.94ID:5H9qw/cT ありがとう
勉強がてら、フィルタリングでやってみるか
勉強がてら、フィルタリングでやってみるか
837名前は開発中のものです。
2025/08/25(月) 19:24:52.64ID:pgacrMvG パッパとRPG造りたいナリ
838名前は開発中のものです。
2025/08/26(火) 07:36:55.38ID:jvaDPhtX そういうあなたにぴったりなゲームエンジンがカドカワさんからでてますよ・・・
839名前は開発中のものです。
2025/08/26(火) 09:16:02.52ID:QxOlVIen あーいうの余計むずく感じるんで無理
840名前は開発中のものです。
2025/08/26(火) 13:49:17.12ID:WJT07pkb じゃあ、おまえは何もできません、おまえ自身が無理だからです
出直してきてください
はい、次のワナビどうぞ
出直してきてください
はい、次のワナビどうぞ
841生出白液
2025/08/29(金) 00:02:13.70ID:511euTV9 extends CharacterBody2D
var gravity = 980
var jump_velocity = -600
var p = 2 # ジャンプ回数
@onready var sprite = get_node("rotation_fish") # 子ノード(回転魚など)
func _physics_process(delta):
velocity.y += gravity * delta
if is_on_floor():
p = 2
if Input.is_action_just_pressed("jump") and p > 0:
velocity.y = jump_velocity
p -= 1
if sprite:
sprite.call("receive_message", p) # 回転に通知
move_and_slide()
if is_on_wall():
get_parent().result = 1
get_parent()._result()
queue_free()
このコードに物体のy座標が800を超えたら
get_parent().result = 1 get_parent()._result() queue_free()
と同じような実行をするコードを追加で作ってもらいたいです。親ノードは下のようです
extends Node2D
var result = 0 # 状態管理用
func _ready():
$Label.visible = false # 最初は非表示
func _result():
if result == 1:
$Label.text = "finish"
$Label.visible = true
else:
$Label.visible = false
var gravity = 980
var jump_velocity = -600
var p = 2 # ジャンプ回数
@onready var sprite = get_node("rotation_fish") # 子ノード(回転魚など)
func _physics_process(delta):
velocity.y += gravity * delta
if is_on_floor():
p = 2
if Input.is_action_just_pressed("jump") and p > 0:
velocity.y = jump_velocity
p -= 1
if sprite:
sprite.call("receive_message", p) # 回転に通知
move_and_slide()
if is_on_wall():
get_parent().result = 1
get_parent()._result()
queue_free()
このコードに物体のy座標が800を超えたら
get_parent().result = 1 get_parent()._result() queue_free()
と同じような実行をするコードを追加で作ってもらいたいです。親ノードは下のようです
extends Node2D
var result = 0 # 状態管理用
func _ready():
$Label.visible = false # 最初は非表示
func _result():
if result == 1:
$Label.text = "finish"
$Label.visible = true
else:
$Label.visible = false
842名前は開発中のものです。
2025/08/29(金) 01:40:24.24ID:VmXngAYr843名前は開発中のものです。
2025/08/29(金) 01:51:57.67ID:NTpF3sfj 「子が移動後に壁にぶつかったら親に通知して消滅するコードに
子のy座標が800を超えたら1行目と同様の処理を追加したい」
"壁に接触している"事を判定しているのはif is_on_wall():の部分なのでここを変更する
"壁に接触している"または"y座標が800を超えている"とする
if is_on_wall() or position.y > 800.0:
こんなん?
子のy座標が800を超えたら1行目と同様の処理を追加したい」
"壁に接触している"事を判定しているのはif is_on_wall():の部分なのでここを変更する
"壁に接触している"または"y座標が800を超えている"とする
if is_on_wall() or position.y > 800.0:
こんなん?
844生出白液
2025/08/29(金) 21:55:18.53ID:511euTV9 そのコードを加えてみましたが、Invalid assignment of property or key 'result' with value of type 'int' on a base object of type 'Window'.というエラーが出ました。このエラーの意味が全く分かりません教えてもらいたいです
845名前は開発中のものです。
2025/08/29(金) 22:12:20.66ID:US91n0Bz 煽りとか抜きにチャットAIに投げたほうが早いぞ
846名前は開発中のものです。
2025/08/29(金) 22:48:50.42ID:Zy5HkM5N >>844
そのエラーはresultプロパティにアクセスしようとしたがプロパティが存在しないから発生している
>>843の修正を元には発生しない
想像に想像を重ねるとエラー文に出てくる"Window"はエラーを出したノードの親ノードを指している
if _on_wall():の次行のget_parent().result = 1が既出エラーを発生させる可能性がある
親ノードにぶら下がる子ノードだったならこのエラーにはならず親ノードの場合に発生する
修正以前にコードの親関係が正しくなくコードが機能する状態でないと思われる
修正前コードを動かすには孫ノードとコードが不足しているのでそれらの追加が必要
ノード構成は以下となるはず
Node2D (親コードextends Node2D配下のアタッチ先)
+CharacterBody2D (子コードextends CharacterBody2D配下のアタッチ先)
++CollisionShape2D
++Sprite2D (孫コードのアタッチ先※提示されていない)
自分もAIに聞いた方が応答速度が早くて良いと思うよ
そのエラーはresultプロパティにアクセスしようとしたがプロパティが存在しないから発生している
>>843の修正を元には発生しない
想像に想像を重ねるとエラー文に出てくる"Window"はエラーを出したノードの親ノードを指している
if _on_wall():の次行のget_parent().result = 1が既出エラーを発生させる可能性がある
親ノードにぶら下がる子ノードだったならこのエラーにはならず親ノードの場合に発生する
修正以前にコードの親関係が正しくなくコードが機能する状態でないと思われる
修正前コードを動かすには孫ノードとコードが不足しているのでそれらの追加が必要
ノード構成は以下となるはず
Node2D (親コードextends Node2D配下のアタッチ先)
+CharacterBody2D (子コードextends CharacterBody2D配下のアタッチ先)
++CollisionShape2D
++Sprite2D (孫コードのアタッチ先※提示されていない)
自分もAIに聞いた方が応答速度が早くて良いと思うよ
847名前は開発中のものです。
2025/08/29(金) 23:01:21.73ID:Zy5HkM5N 想定が足りていなかった
CharacterBody2Dノードをブランチしてシーンとした場合に
修正後コードでこのシーンを「現在のシーンを実行」で動かすと>>844のエラーが発生する
本来親ノードがなければ動かないシーンをカレントシーンで動かした事が原因
正しく親ノードの配下としてCharacterBody2Dを配置する事
CharacterBody2Dノードをブランチしてシーンとした場合に
修正後コードでこのシーンを「現在のシーンを実行」で動かすと>>844のエラーが発生する
本来親ノードがなければ動かないシーンをカレントシーンで動かした事が原因
正しく親ノードの配下としてCharacterBody2Dを配置する事
848生出白液
2025/09/02(火) 22:58:19.74ID:E0WT+1Oc ColorRect(ルート)
└── Node2D(result 変数あり)
├── Label
└── Player(CharacterBody2D)ここにエラーが出たコードが書かれている
result変数が書いてあるNode2Dを親、Labelノードが子のコードのシーンがあって、それを親にし、Playerシーンを子にした状態で同じようなエラーが発生した。
Chatgptに詳しく聞いてみたが解決しなかった。ここでPlayerノードにfunc _ready():
print("自分:", self)
print("親:", get_parent())
print("親の親:", get_parent().get_parent())
を書いて実行すると
自分:fish:<CharacterBody2D#29007807814>
親:root:<Window#28470936891>
親の親:<Object#null>
自分:fish:<CharacterBody2D#31323063660>
親:result:<Node2D#31272731991>
親の親:ColorRect:<ColorRect#31239177554>
と出た。2回実行されてそれぞれ違う結果になった理由が分からなかった。シンプルにChatgptの使い方が悪いかもしれないけどあまり使えなかったです
└── Node2D(result 変数あり)
├── Label
└── Player(CharacterBody2D)ここにエラーが出たコードが書かれている
result変数が書いてあるNode2Dを親、Labelノードが子のコードのシーンがあって、それを親にし、Playerシーンを子にした状態で同じようなエラーが発生した。
Chatgptに詳しく聞いてみたが解決しなかった。ここでPlayerノードにfunc _ready():
print("自分:", self)
print("親:", get_parent())
print("親の親:", get_parent().get_parent())
を書いて実行すると
自分:fish:<CharacterBody2D#29007807814>
親:root:<Window#28470936891>
親の親:<Object#null>
自分:fish:<CharacterBody2D#31323063660>
親:result:<Node2D#31272731991>
親の親:ColorRect:<ColorRect#31239177554>
と出た。2回実行されてそれぞれ違う結果になった理由が分からなかった。シンプルにChatgptの使い方が悪いかもしれないけどあまり使えなかったです
849名前は開発中のものです。
2025/09/02(火) 23:33:43.35ID:HYRahreF >>848
get_parent()とは一つ上のノードを取得する関数なので
図のPlayerでget_parent()を実行したならば結果はColorRectになる
なのでColorRectの子としてPlayerを配置するならがresult変数はColorRectが持っていなければエラーとなる
一回の実行で同じ_redayが二回呼ばれる事は考えにくい
print関数で表示した結果の後ろの数字はノードの固有番号なので違っているならばそれぞれのノードが存在している事になる
ツリー上にCharacterBody2Dが2つ存在していてそれぞれが同じコードが割り当てられていると推測する
この場合、図示されているCharacterBody2DではないCharacterBody2DはNode2Dの配下のはず
ルート直下のCharacterBody2Dを削除すればresultにアクセスできないエラーはなくなる
get_parent()とは一つ上のノードを取得する関数なので
図のPlayerでget_parent()を実行したならば結果はColorRectになる
なのでColorRectの子としてPlayerを配置するならがresult変数はColorRectが持っていなければエラーとなる
一回の実行で同じ_redayが二回呼ばれる事は考えにくい
print関数で表示した結果の後ろの数字はノードの固有番号なので違っているならばそれぞれのノードが存在している事になる
ツリー上にCharacterBody2Dが2つ存在していてそれぞれが同じコードが割り当てられていると推測する
この場合、図示されているCharacterBody2DではないCharacterBody2DはNode2Dの配下のはず
ルート直下のCharacterBody2Dを削除すればresultにアクセスできないエラーはなくなる
850名前は開発中のものです。
2025/09/02(火) 23:45:42.11ID:HYRahreF >>848
>シンプルにChatgptの使い方が悪いかもしれないけどあまり使えなかったです
判らない事は幾ら考えても判らないので聞いてくれて構わないが
残念ながらこういう場では解答が貰える保証がない
なので独学で学習しているならAIの利用方法を習得するのが望ましい
もちろんAIが確実に正答を返してくれる訳ではないので判らなかったら質問を投げてくれてOK
しかし返ってくるかどうかいつ返ってくるかも判らない返答を待つのは効率が悪い
自分は使ってないので判らないが廃墟に近いここよりDiscordの方が活気があったりしないだろうか?
>シンプルにChatgptの使い方が悪いかもしれないけどあまり使えなかったです
判らない事は幾ら考えても判らないので聞いてくれて構わないが
残念ながらこういう場では解答が貰える保証がない
なので独学で学習しているならAIの利用方法を習得するのが望ましい
もちろんAIが確実に正答を返してくれる訳ではないので判らなかったら質問を投げてくれてOK
しかし返ってくるかどうかいつ返ってくるかも判らない返答を待つのは効率が悪い
自分は使ってないので判らないが廃墟に近いここよりDiscordの方が活気があったりしないだろうか?
■ このスレッドは過去ログ倉庫に格納されています
