[過去ログ] 【軽量】godot engine【無料】 part3 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
295: 2024/04/25(木)00:42 ID:7TwSlN/Q(1/4) AAS
ちがうアプローチとしてはTileMapを使用するかな
使えるようになるまでのコストが大きいからお勧めとは言い難いが
高機能で複雑な分、理解できたら便利なクラス
296: [SAGE] 2024/04/25(木)01:06 ID:/gUanyy1(1) AAS
理解できないから半年以上苦しんでるんでしょう。
もっと園児でもわかるような単純なやり方を教えてあげて
297: 2024/04/25(木)01:08 ID:5JWtrSqN(4/4) AAS
まんまTilemapなクラスがあったのね
これなら簡単だわ勉強になりました
298: 2024/04/25(木)06:12 ID:Esvk0j05(1/6) AAS
>>291
キャラの動きも配列の書き換えで行って、書き換えられたら再描画というふうにしてもいいんですが
これだと滑らかに動くキャラってのが作れなくなるんですよね
だからチュートなどではvector2で移動させてるんだろうなと
マップ座標とvector2座標の変換は必要になりますね
>>289
別に特殊なクラスとか使うことないんですね
299: 2024/04/25(木)06:27 ID:Esvk0j05(2/6) AAS
>>293
ゲームロジックとしては配列の書き換えだけということですか?
配列の書き換え→その位置に基づいてキャラを描画、ということでしょうか
300: 2024/04/25(木)12:30 ID:Esvk0j05(3/6) AAS
関数から、2つの値を返すには何使うんですか?
カンマ区切りではダメだったので[1,2]こういう形にしたらいけました
301: 2024/04/25(木)12:50 ID:Esvk0j05(4/6) AAS
↑2つの値を返して、二次元配列として使いたい感じです
array[0][0]
こんな感じです
302: 2024/04/25(木)13:25 ID:7TwSlN/Q(2/4) AAS
2つの値を返す方法が[1,2]でいけたならそれで解決じゃね?
var return_value = [1, 2]
array[return_value[0]][return_value[1]]
303: 2024/04/25(木)14:29 ID:ddMre8ET(1/4) AAS
GDScriptでいいのか?
Pythonっぽい言語仕様だけど実際はC++をスクリプトにしただけっぽいので
Pythonで複数の値を返す時に使うTupleは使えないんだとよ
方法としては2つ、Arrayで返すかDictionaryで返す
以下はサンプルコードな ※RUNボタンで実行結果も確認できるぞ
外部リンク:gd.tumeo.space
304: 2024/04/25(木)15:44 ID:Esvk0j05(5/6) AAS
ありがとう配列で値を返して、インデックス番号でとればいいんですね
これがタプルってやつですか
外部リンク:www.reddit.com
あと、人いねーと思っていつもの癖でマルチポストしちゃった
ごめんなさい改善します
305: 2024/04/25(木)16:12 ID:ddMre8ET(2/4) AAS
マルチでもなんでも問題解決できりゃなんでもいいんだぞ
あとTupleの話は出すべきじゃなかったな、忘れてくれ
306(1): 2024/04/25(木)16:35 ID:lNMYdYSi(1) AAS
流石になんでも良くはねえよ…
それぞれの場所で時間使って答えてくれてんだから
307(1): 2024/04/25(木)17:07 ID:7TwSlN/Q(3/4) AAS
同じ質問は数日待っても解答が得られなかったらとか制限は掛けた方がいいな
redittの方の解答にあるが戻り値がx,yの座標を扱うものであるならVector2を使うと読みやすくなる
308(1): 2024/04/25(木)17:42 ID:ddMre8ET(3/4) AAS
>>306 一理ある。初心者は気を遣うことを覚えるより完成させることを優先しろ、オレの先輩の言葉
>>307 配列のIndexを返したいって話だから、Vec2はオーバーキルだと思うぞ。ぶっちゃけやってることは同じだしわかりやすい方でいいんだけどさ。This is KISS.
309: 2024/04/25(木)18:26 ID:Esvk0j05(6/6) AAS
すまん、どちらか一方にするよ
redditはそれにしても人多いねぇ
310: 2024/04/25(木)18:43 ID:/XEpAv2m(1) AAS
つーかマルチポストで聞く暇あるなら少しは勉強しろよ
初歩的な問題で詰んでるなら尚更
311(1): 2024/04/25(木)20:20 ID:7TwSlN/Q(4/4) AAS
>>308
質問のみならそうなのだが話題の元が倉庫番作るのにキャラ座標をマップ配列に変換するなのでそこまで含むと解答はこうなる
func cpos_to_mpos(cpos:Vector2i, size:int = 32) -> Vector2i:
return cpos / size
312: 2024/04/25(木)21:13 ID:ddMre8ET(4/4) AAS
おー、なるほどね!
Vector2iって勝手にTrancateしてくれるんだな、勉強になったわ
313(1): 2024/04/26(金)06:09 ID:1Ez+K35D(1/3) AAS
>>311
すみません
なんか自己流で複雑なやり方になってる気がする
普通はキャラ座標とマップ座標の変換はやらずに、座標を1つに統一したりするんでしょうか
314(2): 2024/04/26(金)13:14 ID:yaANzBxw(1) AAS
上の人も書いてるけど倉庫番と言うことはグリッドの途中で立ち止まる事はないだろうから、それであれば32で割った盤面上の座標だけ保持して画面表示の時に32倍するなりアニメ補間すればよいのでは
その方がセーブやアンドゥも楽になる
315(1): 2024/04/26(金)13:46 ID:1Ez+K35D(2/3) AAS
>>314
配列使わないということですか?
配列使わない場合、障害物の位置などを表現する場合、どうするでしょうか
二次元配列を使った場合、以下のようにマップを表現すると思います
1=壁,2=キャラ、3=動かせる箱、0=動ける範囲
[
[1,2,3,0,1],
省5
316: 2024/04/26(金)13:52 ID:XXsncJVJ(1) AAS
もしかしてモブはスプライト管理じゃない?
317(1): 2024/04/26(金)14:35 ID:/ZFKx6UF(1/2) AAS
>>315
倉庫番である以上オブジェクトは必ず格子状に配置し管理される
それを2次元配列とみなす事ができる
配列を使わない場合は遠回りに配列があるのと同等の処理を行うだけ
なぜ>>314の説明で配列使わないという解釈になるのかが判らない
配列を使わない便利な魔法でもあると想像してないか?
配列を使わない方法があっても手間が増えて複雑になるだけだから配列が使われる
省1
318: 2024/04/26(金)14:55 ID:/ZFKx6UF(2/2) AAS
>>313
昔はコンソール上で動かす前提で表示もキャラクター単位だったので
配列の要素番号と表示座標の変換は不要だった
今はウインドウアプリになって表示に座標変換は必須
ウインドウアプリの作法も覚えなきゃで同じ倉庫番の初心者講習でも
昔よりは複雑になり難易度上がってはいる
319: 2024/04/26(金)15:42 ID:86tvu5TE(1/2) AAS
絵文字使ってるので表示が上手くいかなかったらごめん
ゲームとしては全然足りないし完成させる所までが課題ではあるが
学習項目を配列のみに集約するとこの配列操作が理解できれば十分
func _ready():
var map = "🧱👷📦🚩🧱\n"
print(map)
map[3] = map[2]
省3
320: 2024/04/26(金)15:45 ID:86tvu5TE(2/2) AAS
二次元配列まで理解できたら上出来
func _ready():
var map = ["🧱🧱🧱", "🧱👷🧱", "🧱📦🧱", "🧱🚩🧱", "🧱🧱🧱", "\n"]
for c in map: print(c)
map[3][1] = map[2][1]
map[2][1] = map[1][1]
map[1][1] = "◾"
省1
321: 我のうんちは小粒(^^ ◆OyJP7qHDVvEI 2024/04/26(金)17:21 ID:jKYfR5nN(1) AAS
二次元配列って配列に配列入れるやつでふよね(^^
そこで詰まってるなら人に聞くよりブッコフに走ってプログラムの基礎が書いてある本買って読んだほうがいいのでは?(^^
煽りとかいじめでいってるんじゃなくて真剣に(^^
ボッキング!(^^
322(1): 2024/04/26(金)18:10 ID:1Ez+K35D(3/3) AAS
>>317
配列でやってみます
ありがとう
昔のやり方というのは、配列の座標を書き換える→画面表示を更新、といったやり方ですよね
今のように、ぬるっと動かすことが出来ないということですね
323: 2024/04/26(金)18:28 ID:Tn7ydmJN(1) AAS
>>322
今の奴ってどのサンプルの話?
存在しない物を今とか空想してんの?
324(1): 2024/04/27(土)14:28 ID:RX6jyHGA(1/3) AAS
フローチャートよりシンプルな図示方法ってないかな?
やっぱりロジックを整理しておいてからコード書かないと脳みそがパンクする
可といってフローチャートは難しい
325: 2024/04/27(土)14:39 ID:RX6jyHGA(2/3) AAS
擬似コードってのやってみますゆえ
326: 2024/04/27(土)16:13 ID:b+RnbsA6(1) AAS
フローチャートが難しいってどういう事
327: 2024/04/27(土)17:08 ID:RX6jyHGA(3/3) AAS
むずいというか、他人に説明するためのものではないので、自分だけ分かる方法でいいかなと
より簡易的であればいいです
フロチャは図形の使いこなしが苦手です
328(1): 2024/04/27(土)22:14 ID:toVZIEFB(1) AAS
>>324
plantumlが面白いかも
plantuml web serverでインストール不要で試せる
検索すればフローチャートの書き方もあるっぽいので
コピペして遊んでみては?
329: 2024/04/28(日)02:33 ID:XkoBpqzr(1) AAS
Godotの2Dのコンセプトは3Dを2Dに見せるやり方ではないってのだけはすぐ分かるのだけど、仮想ゲームマシン的な意味での最大スペックはどこ見ればいいのだ
実行マシンさえ強ければ、昔ながらのBG面もテキスト面もスプライト面もそれらの拡縮回転移動もカラーパレットも無制限で表示させて良い感じなのかな?
他にも昔の疑似3Dもやろうと思えば作れるのだろうけど、それには本物の3D使うよね普通の人は。
330(2): 2024/04/28(日)06:15 ID:6Dc8VXuN(1/4) AAS
1つのスクリプトに書いてるんですが、コードが増えてきた場合、領域を分ける方法は関数以外にありますか?
ただ、視覚的に分けるだけでもいいです
レギオンは使えるみたいですね
>>328
どうも
擬似コード的なものを視覚化するというイメージですかね
331(2): 2024/04/28(日)06:42 ID:6Dc8VXuN(2/4) AAS
コアな機能だけモジュール化なりクラス化なりしたほうがいいのかな
332(2): 2024/04/28(日)09:40 ID:6Dc8VXuN(3/4) AAS
インデントが深くなりすぎる場合、対策はあるでしょうか。
pythonで関数をカッコで表現出来るでしょうか。
333: 2024/04/28(日)11:30 ID:KYDjUHts(1/2) AAS
>>330-332
最初から最後までしっかり読みなさい。
大ヒットゲーム『Balatro』のコードが“力業”だとして共感呼ぶ。コードが汚くても、ゲームが完成してちゃんと動けばそれでいい - AUTOMATON
外部リンク:automaton-media.com
334(1): 2024/04/28(日)12:06 ID:qOnW5aMf(1) AAS
>>330-332
コードの書き方は多種多様な流派があり自分にあった書き方を模索するしかない
チームで開発する時はチームでルールを定める
基本的には公式に従う
安易にファイル分割すると管理が大変になる
単にソースが長いだけならregionで閉じる
全体で共通して使う機能ならグローバルなクラスに纏める
省5
335(1): 2024/04/28(日)13:46 ID:GkEu3rtv(1) AAS
力業ねえ
そうは言っても作り方のセオリーはあるんじゃないかな
ユニティだけど物理ワールドでオブジェクト移動するときにポジションに1加算みたいなことしたらバグるし重いよね
ベロシティにアドフォースするのがセオリーじゃん?
そんな感じで、頭の悪いぐちゃぐちゃなセオリーもへったくれもないコードだと見づらいバグる重いでいいことないし
ゴドーで「こういう仕組み作るときはこうやるのがベター」みたいなノウハウを集めたサイトが欲しいわ
336: 2024/04/28(日)14:04 ID:KYDjUHts(2/2) AAS
>>335
逆引き辞典みたいなのあるといいよね(英語のはわりとある)
まあセオリーやノウハウが欲しいなら、他人のコードをたくさん読むことが近道じゃないかな
337: 2024/04/28(日)15:15 ID:6Dc8VXuN(4/4) AAS
>>334
どうも
自分なりに書いてみます
とりあえず見た目と機能は分けます
338(1): 2024/04/29(月)06:16 ID:W8KMTghQ(1/3) AAS
シンタックスのテーマはストアにないんですかね?
githubから持ってくる感じでしょうか
339: 2024/04/29(月)14:25 ID:W8KMTghQ(2/3) AAS
arrayをforで展開するときに、size関数は要素数ですので、例えば要素数5であった場合インデックス0から開始されますので、4までです
この差が誤解を産むことがあるのですが、なにか対策はあるんでしょうか?
>>338
解決 自作します
340: 2024/04/29(月)14:53 ID:2FsCulaT(1) AAS
殆どの言語で要素番号は0から始まるから数こなして慣れるのが一番
順次処理なら要素番号を使わない操作を心がける
どうしても気になるなら要素番号が1から始まる配列クラスを自前で作る
341: 2024/04/29(月)16:52 ID:W8KMTghQ(3/3) AAS
ありがとう
練習あるのみか
イメージ力みたいなのが足りないと思う
図で考えたほうがいいのかな
342: 2024/04/29(月)21:18 ID:n5TYyf+c(1) AAS
仕様書はちゃんと書いた方が良い
343: 2024/04/30(火)05:44 ID:HJbDE4xz(1/2) AAS
仕様書はフロチャですか
344: 2024/04/30(火)13:00 ID:qkeOAzaS(1) AAS
レスがつくのは嬉しいだろうけど、Godotから話題が離れてるので自分のゲーム開発だけ話すのなら別のスレで書いて欲しい
345: 2024/04/30(火)13:09 ID:HJbDE4xz(2/2) AAS
そうか、了解
346: 2024/04/30(火)14:13 ID:uAstRO41(1) AAS
一人が言ってるだけだから気にしなくていいよ
他で出せる話題でもないならここでやればいい
347: 2024/04/30(火)14:21 ID:t9d+Ii5w(1) AAS
まーた揉めるようなことを・・・学習しねえな
348: 2024/04/30(火)14:26 ID:hVvdsoIz(1) AAS
スレの運用は適切に
例外を許容しすぎると該当スレの存在意義がなくなる
349: 2024/05/01(水)10:08 ID:ePZpzJCq(1/3) AAS
質問です
godotで子ノードにアタッチしたスクリプトの変数にはアクセス出来るんですが、スクリプトを直接ロードして、そこからアクセスしようとするとエラーになるのはなぜでしょうか。この2つの違いが良くわかりません。
目的は長いスクリプトを複数に分けることです。
350: 2024/05/01(水)10:27 ID:ePZpzJCq(2/3) AAS
↑ああそうか
一度シーンにぶら下げないとダメなんですよね godotの場合は
子ノードを作成するか autoloadにするか
351: 2024/05/01(水)12:45 ID:ZXYQy06U(1) AAS
AddChildやAutoLoadはシーンツリーに接続されていてそこ経由でのアクセスが可能
ロードしたスクリプトはシーンツリーから独立したインスタンスになるので
そこから他のノードへアクセスしたいのならば他のノードへの参照を渡せばアクセス可能にはなる
個人プロジェクトだろうから好きにすれば良いが
長くなったスクリプトを短くする為に理解出来てない機能を使うのは得策では無いと自分は思う
それでもどうしてもregionを使わずスクリプトを短くしたいのならば継承を使うと良い
そうすれば継承元のスクリプトは継承先では見た目上隠蔽される
352: 2024/05/01(水)14:24 ID:ePZpzJCq(3/3) AAS
ありがとうございます
シーンに適当なノードぶら下げてそこにスクリプトつけて分割することにします
353(1): 2024/05/02(木)19:02 ID:UVx4JLwS(1) AAS
外部リンク:www.crazygames.com
goober dashおもろいよね
354: 2024/05/03(金)01:51 ID:KMJa0hAC(1) AAS
直接loadしたスクリプトはnew()すると使えるはず
355: 2024/05/03(金)13:51 ID:C+l8v586(1/3) AAS
>>353
gooberはgodotだから貼った
356(1): 2024/05/03(金)18:50 ID:C+l8v586(2/3) AAS
関数内関数を書く時に以下のような形式になるじゃないですか
名前はどんなふうにつけますか?
一般的に変数名を省略系にするのかなと考えますが
var mB = func moveBlock():
print("ブロック動かす処理")
357: 2024/05/03(金)19:12 ID:C+l8v586(3/3) AAS
godotのテキストエディタって機能的に十分なのかな?
vscode使えるならもちろんそうしたいけどね
公式のエクステンションでもあれば
358(1): 2024/05/03(金)20:14 ID:QnOXIZPi(1) AAS
プログラム初心者で、Gamemakerを触っていたのですが
godotはGamemaker触ってたら理解は出来そうですか?
359: 2024/05/03(金)21:48 ID:SB6QCt+i(1) AAS
>>358
インストール不要で気軽に始められるから、公式チュートリアル30分位さわってみて判断したらいいよ
360: 2024/05/03(金)23:12 ID:klkiRmCj(1) AAS
%や/とか+=の意味が分からないくらいなら
ゲーム開発入門みたいな本を買うなり借りるなりして一度目を通すと少しは助かるかもしれない
361: 2024/05/03(金)23:13 ID:/rh2liyL(1) AAS
GameMaker使ったことないから比較するのにチュートリアルやってみようとしたら開けなかった
ブランクプロジェクト開いても何して良いか全然判らなかった
これ使えてたならGodotを新しく覚えるのも余裕じゃない?
362: 2024/05/04(土)00:40 ID:1eZ/ckRt(1) AAS
みなさんどうもです
触ってみろは仰る通り
事前に調べて日本語情報が異様に少ないとか
あったのでパイソン?
とかの言語知ってるのが前提なのかな?みたいな疑問もあって
聞いてみた次第です
GMで苦労したのにまたゼロから習得していくのはしんどいなあw
363: 2024/05/04(土)00:49 ID:sLFn1foN(1/3) AAS
基本的な情報は有志の日本語ブログと公式ドキュメントをツールで翻訳すれば足りる
Pythonに言語仕様が似ているので知っていると楽ができる
今後ビジュアルスクリプティングが流行らないとは言えないがGDScriptでなくても何かの言語は覚えるべき
GodotEngineとGDScriptはかなり使いやすいし判りやすいけど
日本語の初心者向け情報を頼りたいならUnityでC#になるんでないの?
364(1): 2024/05/04(土)01:10 ID:sLFn1foN(2/3) AAS
>>356
関数名は省略できるっしょ
自分が以前書いた例文もCallableクラスの例文も書いてないと思うけどどこで覚えてきたの?
var move_block = func(): print("~")
move_block.call()
365: 2024/05/04(土)01:18 ID:sLFn1foN(3/3) AAS
すまん確認してみたら自分が最初に教えた時に明示的にするために関数名書いてたわ
デバッグなんかで関数名の表示できると判りやすいとか付けるメリットもあるが
インラインで使う関数に名前は付けなくていいよ
366: 2024/05/04(土)05:51 ID:Q/GMBOls(1) AAS
>>364
出来るんですね どうも
たしかに出来た
367: 2024/05/04(土)17:37 ID:YlgyzU/N(1) AAS
初心者どころか無知張りの質問ばっか
流石に聞く前に少し勉強しようよ…
368: 2024/05/05(日)19:19 ID:i1XkVcGH(1) AAS
外部リンク:store.steampowered.com
goober dashってこのゲームの会社だったのね
369: 2024/05/06(月)08:38 ID:tVmDFPsn(1) AAS
去年リリースのゲームだけどなんかあったん?
今年の無料枠だと20small mazesとvoid whisperが良かったな
370(2): 2024/05/07(火)18:08 ID:2LczD5CB(1/2) AAS
外部リンク:ideone.com
このくのif文のネストというのはやり過ぎですか?
コードの意味というより、構造としてです
371: 2024/05/07(火)18:13 ID:mOg/x0Fw(1) AAS
別にダメではないんじゃね
抑えたいんだったらforの中のifだったら否定continueにできないかとか主な部分の分岐は関数にできないかとか
372: 2024/05/07(火)18:29 ID:2LczD5CB(2/2) AAS
ありがとう
折りたたみがあれば、自分的に分かりづらくはないので、そこが判断基準でしょうかね。
373(1): 2024/05/07(火)19:36 ID:RdSJWMfw(1) AAS
コードの文法にこだわるより動いて完成させるほうが大事ってヒットしたゲーム開発者が言ってた
374: 2024/05/07(火)19:55 ID:Wut59JH8(1) AAS
>>370
冗長ではあるかも
範囲外チェックは関数化すれば使い回せるし押せるかチェックも同じく関数化で使い回せる
375: 2024/05/07(火)22:49 ID:4dk4e7hy(1) AAS
>>370
本題とはずれるけど関数やブロックは簡易でもコメント書いた方が良いと思う
優先されるのは動く事なんだけど冗長すぎるコードは将来的には管理不能になり易い
正しく動く関数を作ったら中を見なくても使える位のコメントは必要かと
自分が自分用のコードで書くのはこの程度
## マップ情報からタイル情報を取得
## 指定したpos座標からdir方向にstep目のタイルを取得する
省6
上下前次1-新書関写板覧索設栞歴
あと 627 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.025s