← 戻る

Ludum Dare 44にSubmitした

2019-04-30

https://ldjam.com/events/ludum-dare/44/cutnalign

今は早く寝たい。

今回ブラウザで動くゲームを作るということでいろいろ方法を調べたのだけど、結局Ebitenという Go のライブラリを利用した。Ebiten を使うことで(自分としては比較的)慣れてる Go 言語を使って、Windows 版と HTML 版を同じソースで書くことができてよかった。Ebiten 開発者の hajimehoshi さんにはいろいろ Twitter 上で情報いただいたり、 尋常   じゃない速度でバグを直して頂いたりで本当にお世話になりました。ありがとうございます。

一個だけマルチプラットフォーム対応で工夫した点があって、このゲームはマウスカーソルを動かすことでゲーム内カーソルがブロック単位で移動するのだけど、無条件にマウスカーソル入力を受け取ってしまうとマウスが無いモバイルブラウザでカーソル座標がおかしいことになってしまう。モバイルブラウザではマウス座標を受け取らないようにしたいのだけど、モバイルブラウザかどうかの判定を行う API が存在しないようだった。どう解決したかというと、タイトル画面をマウスボタンで進めた場合だけマウス入力を有効化するようにした。具体的には  ここ。マウスとタッチを両方同時に使う人はあんまりいないと思うし、まあこれでいいか~と。タッチとクリックだけしか使わないゲームなら不要なテクニックだけど、マウスカーソルの位置に応じてなにか処理をするゲームであれば同じテクニックが使えそう。はこのたいあたりとか。

最初は WebAssembly 版の方が速いしいいかな~と思っていたのだけど、試したら iOS Safari で画面が乱れる現象が起きていてまだ安定して使えないようだった。Apple ぇ… https://github.com/hajimehoshi/ebiten/issues/631

ゲーム内容は、今回も最初に「なんとなく落ちものパズルゲームにしたい」というのを考えていて、あとは作りながら進めていったところ、こんな感じになった。というかこれコラムスでは…だってほら、ぷよぷよより作りやすいから…。一応落とすものをローテートさせるのではなく切る長さでコントロールするという点は一応独自性がある気がする。途中で一回、パネポンみたいなリアルタイムに連鎖を繋げられるモードをテストしてみたのだけど、どうも忙しくなってしまってタッチ操作には向かないんじゃないかという印象だった。もうちょっとルール的な深みを出すアイデアも考えてはいたのだけど、具体的にはまとまらず、手が足りない状態だった。

ゲームバランス的なところが詰めきれないまま出してしまったのだけど、3 日目最後の頭がぼーっとしてるタイミングで調整をやるのは無理なので、頭が必要な作業とそうでない作業をわけて、集中が必要な作業は先にやっておくべきだなーと思った。

今回 Go を使ったこともあって部分的にユニットテストをしながら組んでみたのだけど、寝不足な状態でも境界値テストを仕込むことであんまり頭を使わずにバグ修正できたのでよかった。落ち物パズルゲームがユニットテスト向き(離散的、ルールが全て)だというのもあるかもしれない。

Ludum Dare は 48 時間で 1 人で作るモードもあるのだけど、今回 3 日間かけてこれだったので、まだ早いかなーという印象だった。48 時間で作る場合、ほとんど試行錯誤してる余裕なさそう。