imog

主にUnityとかの事を書いています

東方ゲームジャムに参加してゲーム作った

東方二次創作限定のゲームジャムが開催されてたので参加してみた。

touhougamejam2020.web.app

木曜昼から日曜昼の72時間で開発・・というイベントだが、普通に仕事だったので木曜日に軽く触ってから土曜日から本格的に開発始めました。

作ったゲームの話

そんなわけで、「イブキン」というちび萃香で戦うアクションゲームができました。

touhougamejam2020.web.app

ざっくり言うと、ピクミン弾幕要素を足したゲームという感じです。最小の犠牲で倒してよりちび萃香を増やして強い敵を倒す。そんな感じです。デザインを整える時間がなかったので中々に厳しいUIをしていますが、ゲーム部分は歯ごたえあると思うので騙されたと思ってやってみて!

進捗の流れ

木曜日

土曜日の夜

日曜日の朝

締切2分前

おもむろにプレイ動画を上げる

www.youtube.com

久しぶりに徹夜での開発をしたが、もう二度とやりたくないなと思った。

「2010年かな?」と思うほど東方のゲームが上がってきてハチャメチャにテンション上がりました。やはり未だに愛され続けてる幻想郷。

ここからはGodotEngineの話

普段はUnityなんだけど今回はGodotEngineで作ってみました。趣味でちょこちょこGodotを触ってはいたのだけどちゃんとリリースまでやったことはなかったので、いい機会とGodotチャレンジをねじ込んでみたのでした。

よかったところ

2D周りの機能が使いやすい

例えば今回はちび萃香や敵の移動として経路探索が必要なんだけど、Navigation2Dとタイルマップ機能が非常に使いやすくサクッと実装できた。タイルにナビゲーションの設定して設置していったらNavigation2Dのパス取得API叩いてよしなに帰ってくるようになってる。

この動画見たらすぐに使えたくらいの手軽さだった。

www.youtube.com

2D用のカメラ機能もあるんだけど、キャラクターを注視しつつ左右の移動幅の限界を付けるとか移動時のスムージングとかその辺はデフォルトで備わってるので凄く助かった。 UI部分も2Dと同じ座標空間で扱えるのでキャラの頭の上にライフのサークル置くとかも脳死でできたり。

GDScriptが楽しい

今回はGDScript(pythonベースの言語)で書いたけど、動的言語ではあるのでダックタイピングがやりやすく開発終盤にはめっちゃ助かった。衝突検知したオブジェクトにDamageメソッドあったら問答無用でぶん投げるとかそういうことを後半にやりまくってた。やりすぎるとどんなオブジェクトがやり取りされてるのかカオスになるけど、型を付けることはできるので基本的には型付けして一部の部分だけ自由奔放なコードができてた。 あとシグナル機能が標準で付いてるのは楽しい。完全に忘れてたので数年前の自分の記事を見ていた。

adarapata.hatenablog.com

yieldとシグナルで非同期を待つのは手軽で便利だった。 Nodeに直接書く埋め込みスクリプトも、特定の部分だけ動かすためにさっと書くということができてうれしい。

イテレーションが早い

デバッグ実行までが異常に早く、コード書き直して1秒で再生できる。これのおかげでトライアンドエラーのモチベーションがかなり高く保ててる気がする。 GodotEngine内でコードを書けるというのも楽しい。当初はエディタは普通に多機能な外部IDEにした方が効率いいんじゃないかあと思ってたんだけど、ゲームエンジン <-> IDE画面を行ったり来たりすることがなくなると、集中が途切れにくくなるなと感じた。GodotEngine内蔵のエディタがちゃんと補完も利くしエラーとなりうる部分を教えてくれるのでそこまで不便ではないのも嬉しい。ドキュメント検索もしやすい。

大変だったところ

日本語記事の少なさ

本当に少ない、これはそう。素直に公式ドキュメントを見るかissueを見るかOSSなのでコードを読むか。今回は幸い近くにつよつよGodotエンジニアがいたので終盤の謎のクラッシュ問題の解消に協力してもらえたので何とか生き延びた。

逆に言えば日本語記事を考慮しなければyoutubeとかにも結構勉強になる動画が上がってるのでお勧めです。

www.youtube.com

おわりに

完成度は置いておいて、久々にちゃんと遊べるものとしてリリースまでもっていったので割と満足度高いです。やはり遊んでもらってナンボだなと思いました。 粗削りな部分が多いのでアップデートはかけていく予定です。

あと、30超えて徹夜で開発はするものではないなと思いました。