見出し画像

Godotでゲームを制作したので振り返り

Unityの騒動が話題な昨今、Unityからの移り変わり先としてGodotというゲーム制作プラットフォームが注目されています。

そんな節目もあり、「Godot1week」というGodotのゲームジャムイベントが日本で初開催ということで、記念すべき一発目に参加しました!
ゲーム完成までに至った経緯と個人的なGodotに対する思いを書いていきたいと思います。


作ったゲーム

今回作ったゲームはこちらになります。

↓プレイ中の画面はこんな感じ

BGMから生まれるオーディオスペクトラムを防御につかって隕石から身を守っていくゲームです。
ぜひ音ありでプレイしてみてください!

Godotとの出会い

まず最初に自分語りを・・・

4、5年前くらいにGodotの存在を知り、圧倒的挙動の軽さを魅力に感じていました。

当時自分は、学生時代から使っていた頻繁に固まるオンボロMacを使っていたため、Unityを起動するのにも10分かかっていました。
この時点でUnity開発のモチベーションを削がれてしまい、ゲーム制作をしたいなーと思いつつも腰が重い日々をすごしていました。

しかし、そんな環境でも1分で立ち上がるGodotの軽さは非常に魅力的でした。
他にも、ゲーム開発のモチベを上げるポイントがいくつかあって、
例えば簡単な2Dプラットフォーマーであれば、コードを一切書くことなく挙動が出来上がります。
その手軽さが嬉しいし、実際に動いてる画面見るとモチベーションガン上げになります。

また、完全オープンソースという、何者にも縛られない感じが、ゲーム開発って自由なんだ・・!という空気があって好きです。
その雰囲気に寄せられた開発者たちの、自分たちで盛り上げていくぞ感も好印象でした。

※余談ですが、2020年の年末に投稿された、Godotが2020年でできるようになったこと総括ムービーがなんかアツくて、何度も見直してしまいます。
なんか昔からこういうダイジェストムービーに弱い


Godotのチュートリアルを終え、一時期ゲーム作りに勤しんでいたですが、私生活が忙しくなってきたのもあって、完成まで至らずに今に至るという形です。

そのため、Godotはまだまだ初心者という状況です。

PCはスペックいいやつに買い替えたので、Unityも問題なく動く状態になり、今年からUnity1weekというUnityのゲームジャムに初参加しました。
そこで、強制的にゲーム制作をせざるを得ない状況に身をおくことでゲームを完成させる術を学びました。
この世の多くの作品は「締切」で作られているということを実感しました。

そんな中、今回のGodot1weekの開催の告知をみて、これはまじで参加するしかない!!タイミング今しかないっしょ!!!と、勢いで参加することにしました。

制作過程

ここからはサウンドプラネットの制作工程をまとめていきます。

アイデア出し・サウンド収集

なんとなくサウンドに力を入れたゲームを作りたいなーと思っていて、
今回はフリーBGMをお借りしようと思い、いろんなBGMを探し回っておりました。

自分は何かアイデアを考える時、曲を聴きながら世界観を膨らませるという手法をよく取ります。
今回もそんな感じで、KyattoさんとSHUNTAさんの曲を聴きながらイメージを連想させました。

Kyattoさん
ピコピコな可愛い曲調の中、どこかエモーショナルなサウンドが特徴的です。

SHUNTAさん
フューチャーベースで環境音をふんだんに生かした、不思議で魅力的な楽曲が印象的です。

よくBGM系の動画でみる、円型で波形が出てくるあれ(オーディオスペクトラムというらしい)を物理的に使いながら避けるゲーム、というアイデアが生まれてからは、結構スムーズにゲームのコンセプトが出来上がりました。

今回のゲームが宇宙テーマなのは、Kyattoさんの曲で宇宙系のテーマが多かったのにも影響されてると思います。

実装開始

自分はC#ではなく、GDScriptで開発をすすめました。
GDScriptを使う場合、以下のGodotのゲームジャムの便利セットを使用するのがおすすめです。
タイトル画面・音量設定画面・ポーズ画面・ゲームのセーブなど、最初から用意されていたので非常に助かりました。

オーディオスペクトラムの実装

オーディオスペクトラムについての実装調査を行います。
こちらの動画を参考にさせていただきました!

Godotはまだ日本語の情報が少ないため、結構英語で頑張って情報収集する必要があるんですが、これからどんどん盛り上がって日本語の情報も増えて欲しいですね。

オーディオスペクトラムが出来ましたが、この時点でゲームになるのかは半信半疑・・・

ちなみにこのツイートはPCのキャプチャで撮ってたんですが、このあとGodot標準搭載のムービーメーカーモードがあることに気づきました。
進捗共有すごい便利!

隕石の作成

避けゲーにするために、隕石を追加していきます。
なんかゲームっぽくなってきました。

ゲームジャムは毎回「これゲームになるのか・・?」みたいな気持ちになるので、この「ゲームっぽさ」が生まれた時の喜びはひとしおです。

縦方向の隕石を作ったら、横方向の隕石も欲しくなってきました。
また、縦方向の隕石とは違う属性を持たせたかったので、貫通するようにしてみました。
一気にバリアが削られていくのは、絶望感の中に爽快感もあって、絶妙な体験ですね・・・

もう1種類くらい攻撃パターンほしいなとおもったので、流星群を足してみました。
カラフルにしてみたら賑やかになっていい感じです。

ここで締切のタイミングがきたので一旦公開しました。
締切までに最低限プレイできる状態で公開できたので、一応目標達成です!

サウンド変更の実装

公開した時点では1曲しか対応していませんでした。
今回は音楽によってバリアーの形が変わるというテーマだったので、複数曲を用意してこそ価値があるゲームになると思っていました。

そこで、毎回ランダムな曲をかけるように仕様変更しました。
ただ、本当はプレイヤーに素敵な楽曲を全曲聞いてほしい・・・
新しい曲を毎回かけるだけではプレイヤーにモチベーションが生まれない・・・

そこで、新しい譜面を取る→曲が変わりバリアーを貼り直すというシステムを組むことでプレイヤーのモチベーションとサウンドの変更を紐づけました。
これは結構いいアイデアだった気がします!


あとは曲を長めに聴いてもらいたいのに、1曲聴き終わる前までに死んでしまう難易度だと意味ないので、調整のため回復アイテムを追加しました。
また、曲名も表示することで、サウンドにフォーカスしている感を演出します。

こんな流れでゲームが完成しました!
多くの方にプレイいただき、感想もたくさんいただけたので嬉しいです!
なにより素敵な楽曲をベースとしたゲームを作ることができたので、個人的にも満足しています!

Unityと比較した時のGodotの良いところ

Unity1weekとGodot1weekをどちらも経験できたので、比較してGodotの良いなと思ったところを書きたいと思います。
といってもUnityもGodotも初心者なのであくまで参考程度で・・・

スピードが早い

最初にも書きましたが、Godotの良さは何と言っても、挙動の早さです。
まず起動が早いです。
Godot自体が驚くほど容量が軽いので、サクサク開発できますし、デバッグモードの発動も早いです。

また、なんとなくモノが出来上がるまでの工程が早い気がします。

以前誰かのポストで、Unityはコード設計を考えてからゲームオブジェクトを配置していくけど、Godotはノードを配置していきながらそこにコードを書いていくようなイメージと言っていました。

先にノードを置きながらシーンの構造を考えていくことになるため、モノとして画面に表示されるのが早くなるんですね。

自分は表示されている画面を触りながらこねこねいじくり回すのが好きなタイプなので、動くものが出来上がるスピードは早ければ早いほどありがたいです。

「縛り」の少なさ

もう一つの良い点として、「縛り」の少なさがあります。

Godotには、ノードという特徴的な概念があります。
ノードはゲームオブジェクトであると同時にコンポーネントであり、時にはシーンとしても扱えたりする、という、なんとも変幻自在な存在です。
シーンとして作っていたノードをさらに別のシーンに入れ子にするなども可能です。

このように、Godotにおける開発は、一つの役割を決めつけすぎない、柔軟性がある部分が多いように感じます。

例えば、Unityで主な言語のC#は静的型付けで、Godotのメイン言語であるGDScriptはPythonの派生として生まれており、動的型付けです。
コード上でも、変数の型は変幻自在な存在となっています。

言ってしまうと、これが一つの分かりにくさであり、良いところでもあるのかなと思うのです。
この「縛り」の少なさがGodotの魅力の1つなのかなと思います。

もちろんちゃんと設計しないとエラーまみれになってカオスになってしまうという懸念点は含んでいます。
大規模なゲーム開発ではルールをしっかり設けていないと大変なことになってしまいそうですし、その点でGodotにおけるベストプラクティスはまだまだ探求の余地がありそうです。

一方で、ノードの使い方が縛られていないため、ゲーム開発においていろんな選択肢が存在します。
感覚的にはノードは積み木に近いイメージがあります。
ノードの与えられた役割は一つではなく、使い用によっては土台ともなりうるし、装飾にもなりうる・・・
Godotのゲーム開発はまるで積み木を組み立ているようなクリエイティブな面があり、これはなかなか面白い体験だと思うんです。

また、Godotが完全なオープンソースという点も、何者にも縛られない自由感とつながっている気がしています。

まとめ

なんか最後らへんGodotに対するポエムみたいな感じになってしまいすみません・・・

Godot1weekを開催いただいたこーひーあーるさん、貴重な機会をありがとうございました!
Godot好きなので、これから日本でももっとGodotが盛り上がっていろんな情報が増えていくといいなあと思います!

この記事が気に入ったらサポートをしてみませんか?