鳥小屋.txt

主に自作ゲームをつくったりしているよ。制作に関することやそうじゃないことのごった煮ブログ

かぼちゃ育成日記#9 - スーパーカボチャレーザー

f:id:ru_shalm:20140202232713j:plain

前回までのあらすじ

前回:かぼちゃ育成日記#8 - 見た目が変わらないと心に来る - 鳥小屋.txt

シード様の意思を継いで魔族との戦いの日々に明け暮れるRuたん。
数々の障害と詫び石が飛び交う中、ついにアクマとの戦いの地にたどり着く。
これをクリアすれば☆4レアがもらえる……行くぜーひゃっはー!

え、なにこれ勝てるの……


神は言っている――制作に戻れと。

現状

たぶん、今日の更新ここまででいいと思う(

というわけで、カットイン的なアレが出たりビームが出たりするボムを実装してました。必殺技扱いですね。

本作はボスを倒してチートスキルを手に入れつつ、そろそろ十分だろってところでラスボスをフルボッコしにいくゲームなのですが、ボムは本作中でも1位2位を争うチートスキルです。たぶん。

ところで上の絵、描き直すとかいいながらカットインにまで使っちゃってるし、絶対描き直さないコースですねコレ。。。
あと、緑のアイコンは気にしないでください。レーザー発射台の画像描いてないだけです。

カットインアニメーションを流す

f:id:ru_shalm:20140202232815j:plain

このアニメーションのために一週間使ったと言っても過言ではない。というか実際使った……

こういうアニメーションをつくるときにコードで座標を入力して〜というのはさすがにあまりやりたくないです。せっかくだしFlashで作ったアニメーションを変換してなんとかできないかなーと思って調べてみたところ、それっぽい拡張ライブラリがStarlingのフォーラムに!

Flash MovieClip Converter (preserves display list hierarchy) « Starling Forum

やったー!これでいけるじゃん!と思ったのですが、この後、この子の地雷原を踏み抜きまくることになりました……

その1:ループしないアニメーション非対応

まだloopオプションが開発中らしく、有効になってませんでした。
コード見たらloopに関する処理がコメントアウトされていたので全部外してみたところ、基本的な部分はできてる感じ。上のフォーラムでも調整して使ってる人いたし。

ただ、2回目以降の再生のときに開始フレームがレイヤー毎にメチャクチャになる感じだったので、再生開始時に再帰的に全部最初のフレームにリセットする処理をかけてから使うようにしてみた。とりあえず僕の用途では動いてる。

その2:拡大・縮小すると中心座標がずれる(未解決)

行列 is わからん ということで無視した(

その3:Nexus5で落ちる

昨日の夜中にRuたんが死んだ部分。
PCで確認していい感じだったので実機で確認しようと思ってNexus 5をつなげてみたところクラッシュ!

デバッグログには『Error: ArgumentError: Error #3683: Texture too big (max is 2048x2048).』と出ているので、テクスチャが限界サイズを超えて生成しているせいで死んでいることはわかるんだけど、そもそもそんな大きな画像は読み込ませてない! なぜなんだぜWhy!?
この時はいくら考えてもわからなかったので一旦オヤスミ。

で、後で考えてみたらNexus5は解像度がフルHDで445ppiな高解像度端末。リンゴで言えばRetina的なアレ。
もしかして解像度に比例して何かやる処理があるんじゃねーの?と思って、試しにXperia SXで試してみたところクラッシュしない!

これは解決できるのではないかと思ってライブラリ内のテクスチャ生成処理を全部追っかけてみたところ、

var dummyTexture:Texture = Texture.empty(texture.width - (TextureList.PADDING * 2), texture.height - (TextureList.PADDING * 2));

というコードを発見!

Starlingのマニュアルさん)いわく、Texture.emptyにはscaleオプションがあってここで指定した倍率をかけたテクスチャを作るみたい。で、scaleを指定しないとStarling.contentScaleFactorに値が入る。

Retina的な端末だとStarling.contentScaleFactorの値は2以上になります。Nexus5の場合は2.803125という値が入ってる。
つまり、731px以上の大きさを持つ画像を渡すとここで2.8倍されて2048を超えることに。。。

で、ここで作ってる画像は別にStarling.contentScaleFactorを使う必要がある部分ではないので、scaleに1を渡すように変更。
これでNexus5、というか高解像度端末でも落ちなくなったよ!やったね!


というかこれ、僕が携帯買い換えてなかったら気づかないでリリースしてしまったのでは……
iOSビルドはしばらくするつもりないし、AndroidはNexus5以外に高解像度端末持ってないし。

次回予告

  • まだ実装してないスキル(ビット・復活)をつくる
  • ボムの足りない画像描く
  • 今度こそステージ選択

2/22間に合わない感あふれる!!111