統合開発環境であるUnity。マルチプラットフォームに対応し、簡単にゲームが作れてしまうと評判高いが、何となく敷居の高さを感じて今まで手を出せずにいた。そこでenchant.js+box2Dでこつこつとピンボールゲームを作っていたが、制作しているうちに色々と不便な点が見えてきて、制作へのモチベーションが保てなくなっていた。
ここがあかんのや
限りなく低いスキルしか持ちあわせていない癖に何を宣っているのだと自分ながらに思うが、enchant.jsはどうしようもない問題があるんだ。それは自分にとって2点ほど存在する。
■スプライト画像が自動的にスムージングされてしまう。
例えば32×32ピクセル程度の低解像でシャープなスプライトを使いたくても、少しでも拡大しようものなら強制的にスムージングがかかり、ドット絵のエッジがぼやけてしまう。これはenchant.jsの仕様上どうしようも無いらしく、対策するには元のドット絵画像を実際の描画解像度に合わせて用意するしか無い。
■動作が遅い
enchant.jsと物理演算を組み合わせて制作するとHTML5+Javascriptの限界なのだろうか、途端に実行速度が遅くなる。ピンボールゲームは根源となる動作を作り終えていたが、その頃になると自宅のiMacではテストプレイの際に著しくフレームレートが低下していた。プログラムの組み方にもよるのかもしれないが、ここから更に数々の要素を加えていくと、動作速度の面で行き詰まるのは目に見えていた。これじゃスマートフォン上での動作は絶対に無理だ。
これじゃやる気出ねえや。
Unity2Dを試してみる
仕事の繁忙期を終え多少なり時間が取れるようになってきたので、重い腰を上げてUnityをインストール。まずは公式のチュートリアルをかじり、Unityの触りを学んだ後でenchant.jsで作っていたようなピンボールゲームの動作を検証してみた。
何やこの呆気なさは。。
enchant.jsでは矩形の物理演算オブジェクト座標を手入力で打ち込みしていたが、Unityの場合、透過pngのスプライトに当たり判定用のコンポーネントを適用してやるだけで画像のエッジを検出し、自動で当たり判定が設定されてしまった。何だろうこの呆気なさは…唖然とする。物理演算のパラメーターはGUI上で簡単に設定でき、動作速度も比べるまでもなく高速。これなら作りこんでも大丈夫かなぁと再びやる気を湧き起こさせてくれた。
Unityにおける決まり事や、僕にとってはちんぷんかんなC#でのコーディングなど苦戦する事も多いが、現在はWEB上の情報に助けられながら、以前制作途中の素材を流用し、移植作業をコツコツと進めている。