7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

pyspaAdvent Calendar 2015

Day 20

libgdxとKotlinでツンパァードラグーンを移植

Last updated at Posted at 2015-12-20

あなたは ツンパァードラグーン・冬 をご存知だろうか。
わずか122行のjavascriptで実装されているとは思えない秀逸なゲーム性により、一部界隈で伝説となった作品である。

しかし、そんな伝説的ゲームにも穴があり、その穴を突いた必勝法が発見されてしまった。
https://twitter.com/moriyoshit/statuses/577395643863339008

そこで伝説を守るために、この必勝法が使えないようにした ツンパァードラグーン 2015 を実装した。

私はjavascriptに慣れていないため、もっとも慣れているゲーム開発ライブラリである libgdx を使ってPCアプリおよびスマートフォンアプリとして開発することにした。

言語はKotlinを使うことにした。正直Kotlinを使う利点はさほどないが、RoboVMがKotlinサポートしたというのもあったので、なんとなく使ってみることにした。

変更した点

上記必勝法については、単にプレイヤーの移動可能なX座標に制限が設定されていないことが原因だったので、画面外にでないように移動可能なX座標に制限をいれた。

プレイヤー座標を左下基準から下端中央基準に変更した。これにより高く積もったところに立った際の表示がより自然になった。

ジャンプの高さを+1した。私があまりにも下手だったため。

一番右端の地面に雪が積もらなかったのを積もるようにした。

ドラゴンが画面外に出る際、画面下端に落ちないようにした。

既知の問題

  • タップ判定がうまくできていない。
  • ゲーム開始直後勝手にジャンプする。
  • TextureRegionを毎フレーム生成している。
  • iOS版の配布ができない。

移植してみた感想

ナチュラル難読化されたjavascriptはなかなか味わい深かった。
移植後のコア部分の行数が302行まで膨らんでしまったのは、コメントやログ出力を入れた分を加味してもちょっとよろしくない。
コンパクトさもツンパァードラグーンの価値だと思うので、もっと削っていきたい。ファイル数も多すぎるし。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?