テストステ論

高テス協会会長がテストステロンに関する情報をお届けします。

(awesome2048 report) 進捗報告

イータイルズを伸ばすために2048を作り始めたことは話した。今どこまで出来てるかというと,

www.youtube.com

ゲーム画面のロジックとアニメーションを大体実装した。もっとも心配だったことは、React-Nativeでパラレルにアニメーションを走らせた時、それがスケールするかということだったが、何十個ものタイルを同時に動かしてもスムーズに動いたため、問題がないと判断出来る。React-Nativeは思っていたよりすごかった。

既存の2048実装と何か差別化を図りたいところだが,

  • クロスプラットフォームなリーダーボードを提供しているアプリは少ない。あるいは存在しない。これはふつうのやり方で作る場合、AndroidならGoogle Play Gamesを使うだろうし、iOSならGame Centerを使うからだ。実際におれが先行調査目的でダウンロードしたゲームはそうなっていた。これは2048が流行ったのが少し前のことで、React-Nativeのようにクロスプラットフォーム対応なフレームワークはまだなかったし、それぞれのプラットフォームで別のゲームサービスを使うことが実装上自然だったというのもあると思う。おれの作るawesome2048はイータイルズと同様に、Scala.js + React-Native + PlayFabの組み合わせで作り、リーダーボードも共有する。リーダーボードの共有は競技性の高いアプリにとっては必須だと感じている。
  • 多くの実装では、タイルが重なって2倍になった時に何かしらのアニメーションがあり典型的には少しぽよんぽよんする。おれは、アニメーション周りでは少し差別化を図りたいと考えていて、その一つとして出来上がった数字の大きさによってぽよんぽよんの大きさを変えている。4ではほとんどぽよんぽよんしないが、32ではだいぶぽよんぽよんしていることが分かる。その他、吸収される方のタイルは少しfadeさせている。その方が吸収される感が直感的に伝わると思うからだ。人間の知覚は鋭く、多少のアニメーションの違いでもこだわればそれは伝わるとおれは考えている。アニメーション周りは今後も改善し続けたい。

このawesome2048は、出来るだけコミュニティの意見を反映させて改善していきたい。すでに2048というのは知れ渡ってるゲームでプレイした人も多いため、「こういう機能があったら良かった」というのがあればTwitterなどで積極的に発言してほしい。要求は早ければ早いほど反映されやすい。

ところで、React-NativeとScala.jsの組み合わせの力は素晴らしい。上の画像を見てみなさんはどのくらいのコードを想像するだろうか?実はおれは2048のアルゴリズムの実装も含めてここまで大体10時間で作ってしまった。これはおれが優れてるというのもあるし、React-Native + Scala.jsの経験がすでにあるというのもあるが、何よりScalaの素晴らしさに依るものが大きいと感じている。このやり方が広まればいいのにと思う。