Rainbow Speedをリリースしました

こんにちは、ゆうです!
2週間前に記事を書いた、ユニコーンと虹を題材にしたゲームが、無事にjs13kGamesに正式掲載されました。
今回は、このゲームが完成するまでの道のりについて書こうと思います。
13KBという制限
まず、js13kGamesの応募期間がおよそ1ヶ月なのに対して、今回のゲームは2週間ほどで完成しました。実際の制作期間はさらに短かったと思います。
それでも、私より先に30作品以上がエントリーされているのを見ると、期間ギリギリまで待ってから提出するよりも、余裕を持って提出するという決断をして良かったと思います。
なぜここまで短期間で作れたのかというと、そもそも13KBという容量は想像以上に小さいからです。
前回の記事でも書きましたが、このサイズでは何かを新しく追加することよりも、いかに削るかのほうが重要になります。
私の場合、画像データだけで容量の半分近くを使ってしまいました。
その甲斐もあって、ユニコーンそのものの挙動は可愛くできたのではないかなと思います。
前回作っていた見下ろし型のユニコーンも良かったのですが、今回はサイドビューにしてアニメーションも追加できたので、個人的にはかなり満足しています。
2026年のテーマは「Unicorns and Rainbows」なので、この組み合わせだと自然と『My Little Pony』のレインボーダッシュを連想してしまうと思うんですよね。
今回はユニコーンをどうゲームに落とし込むかが重要だったので、他の作品が虹をどのように扱っているのかも興味深く見ていました。
ジャンプだけで操作できるシンプルなアクションゲームで、テーマもかなり安直ではあるのですが、容量の制限と操作感のバランスはうまく成立させられたと思います。
この時点で13,298 bytesでした。
ちなみに、js13kGamesでは13KBを13,312 bytesとして扱います。そのため、ここからさらに容量を削る必要がありました。
その後、スプライトの最適化やタイトルの変更などを行い、最終的に13,294 bytesまで削ることができました。
提出直前にタイトル変更
実際にゲームを提出したのは木曜日(8/27)の夜です。
ところが、提出直前になって他の作品とタイトルが被っていることが判明し、提出前にタイトルを変更することになりました。
個人的には、提出前にタイトルが他の作品と被っていないかチェックできる機能が欲しかったです。
とはいえ、なんとか無事に提出することができました。
Wavedashを組み込んでみる
そして今回、このゲームジャムへの参加をきっかけにWavedashというプラットフォームを知ったので、せっかくなのでゲームに取り入れてみることにしました。
……これがさらに地獄でした。
リーダーボード機能やアチーブメント機能などを組み込もうとしたところ、容量が130バイト近くオーバーしてしまいました。
Wavedash自体の組み込みコードはかなり小さく収まっていて良かったのですが、単純に関数化して文字数を削るだけでは解決できませんでした。
少し専門的な話になりますが、zlibで圧縮したときにより小さくなるようなコードの書き方があり、そこを意識しながら最適化する必要があったため、かなり苦労しました。
最終的には、提出前にすでに実装していた機能を削りたくなかったため、スコア送信機能を削るという判断をせざるを得ませんでした。
その代わり、Wavedash版ではアチーブメント機能を実装することができました。
最終的なサイズは13,308 bytesとなり、残り4 bytesというギリギリのサイズまで収めることができました。
13KBという限られた容量の中でゲームを作るだけでも大変でしたが、最後の最後まで容量と戦うことになるとは思いませんでした。
最後に
今回のjs13kGamesへの参加を通して、少しでもゲームやFlyable Heartの知名度が増えれば、それだけでも十分な収穫だったと思っています。
もし興味を持っていただけたら、ぜひ実際にプレイしてみてください!
そして、よければXなどで感想を教えてもらえると嬉しいです!
