かくことない

かもしれない

8時間でゲームを作れなかった話

Ludum Dareというゲームジャムがあります。ゲームジャムというのは一定の時間でゲームを作る(要するにゲーム版ハッカソン)というもので、Ludum Dareはその中でも世界最大規模のものです。

自分は次回のLudum Dareに参加しようと思っているのですが、ゲームジャムに参加したことがありませんでした。というわけで、昨日(2019/6/8)試しに8時間で一人ゲームジャムをやってみました。

できたやつのソースコード(github)

ルール

  • 時間は8時間。ただし、ごはん休憩とお風呂休憩中は時間をすすめない
  • テーマはランダム単語ジェネレータで開始時に決める
  • 用意してよいのは開発環境とコードのテンプレートのみ。絵などが必要であれば時間中に作成する。素材の使用は認めない。
  • 泣かない

ゲームジャム中の風景

警告: 無編集、約9時間

シークバーの真ん中あたりをクリックして「へー」と思ってくれたら十分です。

Youtube

できたものの説明

テーマ「まつぼっくり、戦艦、ボーダーライン」にそって考えた結果、まつぼっくりを広い範囲に届けて生存範囲を広げるゲームになりました。

ゲームが始まると、松の木からまつぼっくりが落ちてきます。右クリックを押している間まつぼっくりの傘が開いて(画像1枚しかないから見た目は開いてないけど)右方向に進むことができます。 地面に着地するまでに進めば進むほど、生存範囲を広げたということで高得点がもらえます。 ただし、着地したまつぼっくりを何故か狙う鳥がいます。この鳥にまつぼっくりをとられてしまうと、その分の点数が減ります。

まつぼっくりは何故か謎の弾丸を発射することができるので、この鳥を打ち落とすことで点数の減少を防ぐとともに、鳥が持って行った分だけ点数アップを狙うことができます。

なお、弾丸の発射と傘を開くことを同時に行うことはできません。バランスが重要。

f:id:ix5231:20190609203011p:plain

反省点

完成しなかった

結局、8時間以内に完成させることができませんでした(レポジトリのコードは時間が終わった後に調整したもの。ゲームジャム終了時点のコードが見たい場合はgame-jam-endタグを参照)。

おそらく、ペース配分をするときに休憩を計算に入れなかったことが原因の一つだと思います。例えば、1時間ごとに5分休憩をとるなどを決めていれば、途中で必要以上に休憩したりすることがなかったと思います。 また、ここで私が言う「完成」は「ゲームが開始し、プレイ結果が出て、終了する」、この一連の流れができることを言っています。今回の場合、ゲーム終了の実装が間に合いませんでした(つまり、ゲームが永遠に終わらない)。 個人的に、そもそも先にゲームの終了部分を作るべきでだったと思います。 ゲーム本体がまだまだ未熟でも、とりあえず結果が出て終了すればゲームと言い張れると思うからです。

使ったテンプレートやライブラリの把握が足りなかった

今回、開発にはRust+ggezを選択し、ggezの開発者の方が作ったテンプレートを基にゲームを作りました(ggezは結構低レベルなライブラリで一からやると結構めんどい)。Rustはともかくとして、ggezに関しては何か月か前に少し触って以来だったので、APIの把握があまりできていませんでした。 また、テンプレートの方も前日に読んで動かしただけで、ちょっとコードを書いてみて弱点等の把握をしていなかったため(実はマウスの対応が不完全だった等)、それらに若干振り回されてしまった時もありました。

感想

完走した感想ですが、意外と楽しかったです。自分はかなり飽きっぽいのぶっちゃけ30分くらいで飽きると思っていましたが、なんだかんだで完走できました。

今回は個人的嗜好によりRustで作りましたが、今度はUnityとかデカいゲームエンジンで作ってみたいです。C#言語4.0以来使ったことないけど。それともまさかのF#? 次回やるとした、多分9月くらいだと思います。次は時間内に完成させたいところ。