2週間でゲームを?できらぁ!
Ebitengine Game Jam 2024 というイベントが開催されていたので参加してみた。2週間で、ebitengine を使って、出されたお題に沿って、という感じでゲームを作って投稿してねという主旨のイベントである。
ゲーム作りには何度かトライしたことがあるのだが、完成させることなく放置してしまうパターンばかりであった。というかそういうパターンしかなかった。しかしゲームジャムというイベントに参加することによって「締め切り」を発生させれば、半ば無理矢理でもゲーム作りを完遂できるのではないかと目論んだわけである。2週間という期間は短いが、制作期間が短いならば短いなりのものを作ればいいのだ。
Go でゲームを作るためのゲームエンジンである。
https://ebitengine.org/ja/
主に 2D なゲームを作るために便利な API を提供してくれている。さまざまなプラットフォームへのビルドをサポートしていて、Windows や Mac や Linux のみならず、Android や iOS、Wasm へのビルドもやれちまうという優れもの。ちょっとしたゲーム作ろうってときに、自分のような「何を書くにせよとりあえず Go で書きてえな」って思う人にはフィットするんではなかろうか。ebitengine、シンプルでとても好き。
投稿したものがこちら。ソースコードは https://github.com/pankona/gj にコミットしてある。gj は Game Jam の略のつもりであるが、名付けとしてはちょっと一等地を取り過ぎてしまったかもしれない。次のゲームジャムに参加したかったらどうする気だ。gj2 か。
Wasm ビルドをしてブラウザで遊ぶことができるようにしてある。遊ぶためには itch.io の投稿ページに行くか、あるいは GitHub Pages を使って https://pankona.github.io/gj/ でもホスティングしている。バリケードで家を守りながら張り手で虫をしばくゲームである。最初からブラウザ (PC でもスマホでも) で遊ぶことを想定していたので、クリック (タップ) だけで遊べるようにしてある。家族からは割と好評だったと…思う…たぶん…。
妥協に妥協を重ねはしたものの、一応完成ということにして投稿までこぎつけた。タワーディフェンスじみたゲームで「House Defense Operation!」と名付けておいた。
ゲームジャムには全部で13作品が投稿され、厳正なる(?)レーティングの結果、我がゲームは6位となった。順位はさておき、作ったものが実際に遊んでもらえてレビューコメントももらえるというのはなかなか得がたい体験であろうと思う。やってよかった。
さて、ゲームジャムに臨むに当たって、最初に「どんくらい作業時間とれるんだっけ」っていうのを計算した。自分は一応社会人なので、平日は働いている。個人開発としてゲーム開発にあてられる時間は業務終了後、あるいは業務が始まる前とか、あとは土日に限られる。長くて1日2時間くらいとして、2週間の制作期間があるのであればおよそ28時間があてられるということになる。28時間、3人日とか4人日とかそれくらい?
28時間フルに使って開発を行おう、とはしなくて、きっとなんらかの事情で作業ができない日があったり、何かにどハマりして捗らない日があったりするのが常である。およそ半分の時間でできあがるものを目指そう、というのが最初に考えたことであった。14時間くらいね。最初の1週間でなんとか遊べる段階までいかないと厳しいぞ、というくらいの見積もり。このへんの見積もり感は10年以上ソフトウェアエンジニアやっているなりの経験が活きているんではないかと思わないでもなかった。
実際のところ、毎日2時間程度という作業時間の見積もりは概ね正しかった。であるが1週間経ったところで遊べる水準になっていたかというとそんなことはまったくなかった。音もアニメーションも入れ終わったのが締め切り当日であって、提出直前までバランス調整しながらバグ修正しながらみたいなバタバタを繰り広げてしまった。10年以上のソフトウェアエンジニアの経験とはなんだったのか。まあそんなもんだろうとは思っていたけども。
敗因はゲーム作りの見積もり経験の乏しさであろうか。まあ次もっかい作ろうっていうときには、今回の実績を活かしてもうちょっと確からしい見積もりができるんではないかと期待する。
提出したゲームの評価は https://itch.io/jam/ebitengine-game-jam-2024/results で確認できる。自分が投稿したやつの評価を見ていくと、Audio がなんとなく高評価であり、一方で Innovation が低評価であった。Audio なんてまったく頑張ってなくてぶっちゃけ適当に音をあてただけではあるんだが、しかし高評価というのは一体。得てしてそういうものかもしれないが。
Innovation が低かったのは、まあありきたりなゲームデザインだったということだろうと思う。分かる。わかりやすくタワーディフェンスであるから、そこに Innovation がありますかと問われれば「なさそう」という気持ちになる。俺だってなる。次回やるときにはもうちょっと何か「ひねれる」ように考えてみよう。
ゲームの投稿ページにはいくらかコメントが寄せられているが、総じてちょっと「難易度が高い」という話がありそうだった。作者の自分でも勝率7割くらいなんで、初見の人がクリアしようっていうのはきっと絶望的なんだろうな。ゲームジャムなんで一口サイズのゲームなんだから、もっと簡単にクリアできるレベル設計にすればよかった。次回はもっと簡単でいこう。うむ。
職場の times に進捗を垂れ流すなどしていたのだが、途中経過をプレイしてくれる同僚がたくさんいた。フィードバックをたくさん受けられたおかげでクオリティをだいぶ向上させることができたと思う。プレイしてくれた方にたいへん感謝!完成後にプレイしてくれた人々にもたいへん感謝!
まがりなりにもゲームが完成すると、アーキテクチャにせよ見積もりにせよ、次回に活かせる振り返りができる。未完成だとなかなか振り返りっていう感じにならないからね。なんにせよ、曲がりなりにも提出できてよかった。作っている間は結構つらかった気がするけど、喉元過ぎた今となっては「次回があればまた参加してみたい」という気持ちになっているから不思議だ。締め切り駆動開発、次回を楽しみにしておくぞ。
最近は Unity というゲームエンジンをいじっている。便利らしいがまともに使えるようになるまでにどれくらいかかるだろうか?どんな手段で手に馴染ませるのがいいだろうか?
Unity というゲームエンジンがある。2D なゲームでも 3D なゲームでも作れるらしい。しばしば Twitter 上では #unity1week というようなハッシュタグを見かけることもあり、ちょっとしたものを高速に作るのには向いてるっぽいような雰囲気を感じている。
プロトタイピング的にアイデアを高速に形にできるっていうのは大事だと思っている。じゃあ自分もちょっと試してみるかって思って公式サイトの指示に従って諸々インストールしてみたものの、いったい何をどうしたらどうなるのか微妙に分からない。便利そうな顔はしている。なんとなく画面に物体を配置してなんとなく C# のスクリプトを当てがうみたいなことはやってみたが、一週間で何かを作るっていうようなレベルに達するのはなかなか遠そうである。
たぶんしばらく触っていればもっと手に馴染んでくると思うが、平日はあんまり手を動かす時間が取れない (気力がないとも言うかもしれない) ということが分かってきた。中年乙。週末は週末で日中は部屋に引きこもっているわけにもいかず、夜にはやはり気力が尽きていて YouTube 見ながら値落ちするみたいな生活パターンがしばしばである。さて、このままでは Unity が手に馴染まないまま一生が終わりそうであるがどうすれば良いか。
この構図は Unity に限らず “任意の何かを習得しよう” としたときに同じ問題が起きそうな話でもあるな。
気力が尽きていてもやれることがあり、それはたとえば自分にとっては
あたりである。
理想を言えば、“毎日 1 時間、PC に向かって Unity をがちゃがちゃいじる” みたいなことができるとよさそうだが、これは今の自分にとってはなかなかハードルが高そうである。もっとハードルを下げて、とにかく “毎日 1 mm でも進歩すること” を目指すのでどうかと考えた。
気力が尽きていてもやれることをちょっと応用して、
というような感じなら毎日でもイケそうな気がしないでもない。動画やツイッターは体系的に知識を得るにはあんまり向かないかもしれず、そういう意味では “ちょこっと本を読む” のが一番効率がいいような気がする。ちょっとの時間しか使えないのであればなるべく効率よくやるのよ。
で、進捗はなるべく記録しとくのが良いと思っている。GitHub の草みたいなもんで生え揃ったら嬉しい気持ちになるし、あんまり途切れたらイヤな気持ちになるわけで。記録しとくことは、ささやかかもしれないが続けるモチベーションのひとつになるように感じている。
本を読むのは良いとして、それをどこに記録するのはどこがいいんだろうかと考えた。このブログでもいいかもしれないが、「n ページ本を読み進めました」みたいなことだけでブログ更新するのもなんかすごく微妙に思った。そもそも “ブログを書く” というのが自分にとってはだいぶ腰が重いわけであるから。
スマホでワンタッチで記録できるくらい簡単なのがよくて、だとすると Pixela を用いて草を生やすくらいがいいのかもしれないと思っている。Pixela については、Android 版の便利な何かというのはいまのところ存在してなさそう。とはいえ、グラフとボタンを並べるくらいであれば PWA なウェブページで作ればすぐできる気もするんで、いったんそんな感じでスモールに始めてみるのがいいかしらね。
時々作りたくなるよね、ということで案を練り始めた。
構想を練っている。なんとなくの概要は以下のようなもの。
MVP といいつつ、“とりあえず動く” 段として目指す場所を定めておく。
こんなところか。ゲームのメインとなる他人とのインタラクション(仮想)を試してみれば、楽しいか楽しくないか、楽しくないとして何が楽しくないか、みたいなこと考えたりできそうな。
こういうのは構成だけで終わること山の如しなので、作ってみような