みなつ@プチコン

BASICでゲームが作れるWiiU/3DS用ソフト「プチコン」のブログです(*´▽`*)

スプライトでエフェクトをかけるサンプル

f:id:tksm372:20180207223702p:plain

公開キー【PK33XXA6】(2017年2月17日公開)

置きスプライト!

プチコンのスプライトは、昔ながらのスプライトのように定義した時点の画像がスプライト用のメモリに転送されるのではなく、毎フレーム毎にSPPAGEで指定したグラフィックページ(デフォルトでGRP4)の画像を参照して、スプライトが描画されます。ポリゴンのテクスチャみたいな感じですね。そのため、一旦SPSETやSPOFSでスプライトを表示することにしておけば、グラフィックページを書き換えるだけでスプライトに表示される画像も更新されます。私はこれを勝手に「置きスプライト」と呼んでいます(*´▽`*)

そこで、置きスプライトを使って、グラフィック用のページに描かれた画像に、無負荷でリアルタイムにエフェクトをかけるサンプルを作ってみました。

各効果の解説

  1. ぼかし
    SPCOLORで半透明にしたスプライトを、上下左右斜めの8方向に1ドットずつずらして重ね合わせると、ぼかたようなの効果になります。
  2. ふちどり
    SPCOLORで色を付けたスプライト(透明度は不透明のまま)、上下左右斜めの8方向に1ドットずつずらして重ね合わせると、ふちどりの効果になります。
  3. ドロップシャドウ
    SPCOLORで半透明、かつ黒っぽい色にしたスプライトを、少し斜め下にずらして重ね合わせると、ドロップシャドウのような効果になります。

おわりに

置きスプライトの最大の利点は、単にスプライトの機能を使っているだけなので、余分な負荷が一切かからないところにあります。もちろん、グラフィックに描いたものにしか効果がないため、グラフィック自体を更新する負荷はかかりますが、その分を差し引いても、面白い効果が得られるんじゃないかと思います。

あと、SPSCALEで拡大すれば、レンズのような効果も得られます。例えば、プチコンの上画面の標準解像度は400x240ですが、縦横2倍、4倍に拡大して200x120ドットや100x60ドットの解像度に落とすと、更新しなければいけないピクセルの総数が1/4や1/16というふうに大幅に減るので、毎フレーム全画面を書き換えるような力技のゲームも作成可能かもしれません(   ̄▽ ̄)

 


3DS/WiiU プチコン3号/BIG 用デモ「スプライトを使ったエフェクト」