あなたは ツンパァードラグーン・冬 をご存知だろうか。
わずか122行のjavascriptで実装されているとは思えない秀逸なゲーム性により、一部界隈で伝説となった作品である。
しかし、そんな伝説的ゲームにも穴があり、その穴を突いた必勝法が発見されてしまった。
https://twitter.com/moriyoshit/statuses/577395643863339008
そこで伝説を守るために、この必勝法が使えないようにした ツンパァードラグーン 2015 を実装した。
私はjavascriptに慣れていないため、もっとも慣れているゲーム開発ライブラリである libgdx を使ってPCアプリおよびスマートフォンアプリとして開発することにした。
言語はKotlinを使うことにした。正直Kotlinを使う利点はさほどないが、RoboVMがKotlinサポートしたというのもあったので、なんとなく使ってみることにした。
変更した点
上記必勝法については、単にプレイヤーの移動可能なX座標に制限が設定されていないことが原因だったので、画面外にでないように移動可能なX座標に制限をいれた。
プレイヤー座標を左下基準から下端中央基準に変更した。これにより高く積もったところに立った際の表示がより自然になった。
ジャンプの高さを+1した。私があまりにも下手だったため。
一番右端の地面に雪が積もらなかったのを積もるようにした。
ドラゴンが画面外に出る際、画面下端に落ちないようにした。
既知の問題
- タップ判定がうまくできていない。
- ゲーム開始直後勝手にジャンプする。
- TextureRegionを毎フレーム生成している。
- iOS版の配布ができない。
移植してみた感想
ナチュラル難読化されたjavascriptはなかなか味わい深かった。
移植後のコア部分の行数が302行まで膨らんでしまったのは、コメントやログ出力を入れた分を加味してもちょっとよろしくない。
コンパクトさもツンパァードラグーンの価値だと思うので、もっと削っていきたい。ファイル数も多すぎるし。