【ゲーム制作】Godotエンジンで何かを作ろうの会【初心者歓迎】

RPGの原型みたいなものを作ってみました。真ん中の主人公が動くだけですが

「いいね!」 2


会話を入れてみましたがウィンドウからラベルがずれている。接触設定も何かうまくいかないしいろいろ難しいですね。しかし昨日よりはだいぶ理解できてきました。

「いいね!」 2


ラベルを直しました。クイズみたいなのを作ってみるか。

「いいね!」 2

古典的なRPGなら何となく作り方が分かりました。アクションRPGみたいなのを作ろうとすると先は長そう。

「いいね!」 2

次は擬似3DMAPを歩く奴をやってみたいと思います。

「いいね!」 3


苦労してタイルを配置したんですけどこのTexture RegionとTile Sizeが見事にマッチしてないとタイルがうまく配置できないみたい。
PNGファイルも一定間隔でないとタイルとして認識させるのがすごく難しい。
ここで結構苦労しそう。

「いいね!」 2

使えそうな解説。

「いいね!」 1

Godotの公式のチュートリアルは今のところGodot3の書き方で書かれているらしい
それをGodot4でチュートリアルをやるときに参考になりそうな記事

「いいね!」 1

32X32でもとからきちんと配置されたPNGファイルで横32X縦16にするとブロックがうまく収まるだけど2回に1回の割合で配置順がおかしくなる。
X軸方向はちゃんと配置されるんだけどY軸方向が半分しかまともに配置されないのよな
うーん。

「いいね!」 2


わかった。このRendingを16から1にするとなおる。

「いいね!」 2


高さ毎にLayer作るらしいんだけどちょっと面倒。20階ぐらい作ろうと思ってたので20Layerになってしまう。
そこはおいおい考えるとして盛親を何かアニメーションの3D風のキャラに置き換えねば。

「いいね!」 2


大人の事情で盛親は斧持ったハゲになった。そしてアニメーションが追加されました。
次は動きを右下。右上。左下。左上に制限して一升づつ動くように制限したい。

「いいね!」 2



上の画像の位置から左にいくと下の画像の位置に行き着く。
多分キャラが歩くグリッドがタイル配置されてるグリッドと何か違うふうに構成されてるんだと思うけど、こういう3Dっぽいのは3軸で位置定義してそこにいろいろはめてく使用じゃないと難しいな。
さて、どこがおかしいのやら。位置マスずつ歩くのはできました。

「いいね!」 1

ちょっと試しにマグマブロックでX32Y32で試してみたらちゃんとうごきました。
左端から右端までがちゃんと同じ行になる。
ブロックをY16にしてるから表示がまともになるんだけど、動きがおかしくなる。困ったもんだ。
うーん。どうすればいいんだろう。

「いいね!」 2

CHATGPTのハルシネーションっぽい。
YOUTUBE参考にしたらはしからはしまでいけました。

「いいね!」 1

よし、やっとメインの方も直った。次はすり抜け・移動判定か。
しかしゲーム製作はファイルの保持が難しいいつの間にか変なところの設定変わってて動かなくなったりする。
後AIの画像作成もそろそろ活用したいところ上記の画像も左上と左下のアニメしかない。

「いいね!」 2

FPSが低すぎて移動SPEEDが早すぎると移動が素早く終わってしまってAnimeが再生されないことがある。

「いいね!」 2

Godotでの実装ポイント

TileMap

  • TileSetでマップの見た目とCollisionを設定
  • ただし、SRPGは衝突物理エンジンに頼らず自前で通行判定をすることが多い

ユニット

  • Node2DCharacterBody2Dなどを使い、グリッド座標と画面座標を分けて管理
  • 移動処理は自分で制御し、通行可能かの判定を自作
  • A*アルゴリズムはGodotに内蔵されているか、独自実装する

なるほど、確かに移動マスが離散なので移動ロジック作って制御した方がいいって事ね。

SRPGの障害判定はどうするか?

1. 自分で歩行可能タイルの判定ロジックを書く

  • TileMapのタイルIDや専用の2D配列で歩行可能/不可を管理
  • 移動しようとするマスが歩行可能かチェックして動きを許可・拒否

2. 経路探索を使う

  • GodotはNavigation2Dノードを持つが、これは多角形ナビメッシュ用でグリッドベースとは違う
  • グリッド用の経路探索は自作が多い(A*アルゴリズムの実装が代表的)
  • 外部ライブラリやGitHubで公開されているA*実装も活用できる

これは意外と難儀そうだ。

「いいね!」 2

今日は障害判定を作ろうとしてたんだけど作っているうちに調べてるとmap editorを実装してそこに障害判定の情報も入れて移動プログラムを組み込んだ方が良さそうだな。ということでmap editorをつくってみよう。

「いいね!」 2

なるほどこれがMAP EDITOR、クリックで勝手にどんどんタイルが設置される。

「いいね!」 1