見出し画像

日記

Godotというゲームエンジンが2D向けで使いやすい&ライセンスフリーで安心、と聞いて使ってみることにした。

Unityでいうシーンとプレハブが、Godotではシーンに統合されている。シーンを構成するものはノード。親シーンに対しては子シーンもノードの一つとして振る舞う。つまり全てノード。

ノードはUnityでいうコンポーネントを所定の組み合わせで持っているゲームオブジェクトのようなもので、それ自体を一塊のコンポーネントのように使う。コンポーネントを追加する感覚で、親ノードに子ノードを足して作っていく。

Unityと並べて説明しようとするとややこしいが、ようするに似たような感じなので、Unityが使えれば使えそうである。動作が軽くて、色んな機能や画面が見やすいところに置いてあっていい感じ。

チュートリアルの敵避けゲームを組んでみた。簡単簡単

画面サイズの設定とかキー入力の取得とか、最初にやることが「プロジェクト設定」にまとまっていて感動的に楽だ。Unityだと画面サイズの概念はカメラが絡んでくるし、パッドの入力をいきなり拾ってくれたりしない。

もう一つくらいチュートリアルをなぞるか迷ったが、作りたいものが2Dゼルダで、独自の部分は少ないはずなので、「チュートリアルをなぞりながら本番を組む」でいってみることにした。

歩行アニメを組んでみた。

ステートマシンを使ってみたかったので、ステートマシンで組んでみた。ら、ぐちゃぐちゃになった……。

2Dゼルダだと移動方向が4つあるので、移動アニメと待機アニメが4方向ぶんある。それらがほぼ全部相互に遷移できるので、自然こうなる。

こんなにぐちゃぐちゃだとステートマシンの意味がないような気もする。全部スクリプトで書いた方が視認性高くないか?

ただ、ここに付け足していくぶんにはシンプルに表現できる場合も多そうだ。たとえば右端にあるattack_rightのあたりは分かりやすい。

「idleとwalkのどちらからでもattackに移れて、attackが終われば自動でidleに戻る」

左上に伸びている「ジャンプ中の方向転換」もなかなか分かりやすい。

「ジャンプしたら、向いている方向と同じ方向のジャンプアニメをまず再生するが、空中にいる間は相互に方向転換できる。ジャンプが終わったら、終わった時向いている方向のidleに戻る」

Advanced Conditionを使えば遷移条件をスクリプトに書けて、わりとシンプルなスクリプトになる。同じことを全部if文で書こうとしたらそこそこ複雑だし、処理順を考えないといけない。

ようは

  • if+処理順

  • Advanced Condition+ステートマシン上の位置

のどちらの形で情報を持たせるかなので、そう悪くないのかもしれない。

年末進行

いつもは年末だからといって忙しくないが、今年はどたばたしそうだ。1月半ばや1月頭の〆切があって、帰省するなら年末〆と同義になる。

シンセをさぼっているが、これも年末にスタジオ練習がある。

わりとパンクしそう。


でもゲームを作りたい……。


「その時やりたいことを最もやりたい」という性分にはいつも抗いがたい。

いいなと思ったら応援しよう!