プチコン関連メニューに戻る

スプライトによる擬似3Dテスト 〜OLIONmkII〜(プチコンmkII専用)




プチコンのスプライトを使って、擬似3Dのテストをしてみました。

敵機は、輪切り風にした64x64ドットのスプライトを8枚用意して、それぞれ位置と角度とスケールを調整しながら、重ねて描画しています。
この方法は、キャラの形状によって向き不向きはあるものの、大きなキャラを高速でスムーズに動かすことができるので、60fpsで3Dっぽさを出すには良いと思います。

また、プチコンはグラフィック面をスプライトで実現しているため、あまり多くのスプライトを重ねると、グラフィック面の一部が消えてしまいます。
このプログラムは、敵の表示だけで重ねあわせの限界までスプライトを使っているため、敵は1体しか出せませんし、グラフィック面は部分的に消えてしまうので使うことができませんでした。

そのため、自機のレーザーをテキスト画面に描画したり、敵のミサイルはBGキャラとして描いたものをパターンチェンジさせながらBGOFSでスクロールさせたり、色々と工夫をしています。


ゲームとしての調整はほとんどやっておらず、完成度も低い(面白くない)ので、スコアやダメージを変更したり、動きをいじったり、キャラを描き替えたり、ステージクリア制にしてみたり、皆さん、自由に改造して、面白くしてみてください。


QR


"PRG:TN_OL2"

プログラム部分です。600行くらい。

公開するにあたって、頑張ってコメント入れてみましたが、途中で力尽きたので後半は不親切でごめんなさい。
バグなどあったら、黙ってそっと 直しておいてください。


"CHR:TN_OLFNT"


テキストのフォントです。
BGFリソースにロードしています。
自機のレーザーもここに描いてます。


"CHR:TN_OLBG"


BGのデータです。
BGU0リソースにロードしています。
最初の4キャラが星、あとは敵のミサイルのデータです。
スプライトを敵機の表示で限界まで使ってしまったので、ミサイルは、4x4のBGを書き換えながらBGOFSでスクロールさせることで実装しました。
パレットは、デフォルトのBG用パレットの0番を使っています。


"COL:TN_OLCOL"


スプライト用カラーパレットデータです。
COL1リソースにロードしています。
主に爆発パターン用で、デフォルトの状態からパレット0のみ変更しています。


"CHR:TN_OLEN1"


敵1のデータです。
キャラを輪切りにして、8枚のスプライトに描き、ゲーム中はそれを重ねて描画しています。
また、リソースは64x32で作っていますが、ゲームの初期化時に、このデータを一度SPU6にロードした後、64x64になるようにしてSPU0,SPU1に再定義しています。
(それほど大きな意味はないのですが、CHREDでキャラを描くときに1画面で全て見えるほうがやりやすかったので…)
スプライト用パレットの2番を使って表示しています。


"CHR:TN_OLEN2"


敵2のデータです。
敵1と同様、64x32の8枚のスプライトに描いてあり、一度SPU7にロードした後、64x64になるようにしてSPU2,SPU3に再定義しています。
こういう細い形状のキャラは、敵1のような円形のキャラよりも描画が破綻しやすいのですが、旋回がうまく決まったりすると、ダイナミックな動きに見えてかなり格好いいです。
スプライト用パレットの2番を使って表示しています。



"CHR:TN_OLBM0"


爆発データ(1コマ目〜4コマ目)です。
SPU4にロードしています。
爆発は64x64のスプライトによる16パターンのアニメーションです。
かなり贅沢にリソースを使いました。
スプライト用パレットの0番を使って表示しています。

このあたりでQR取り込みに疲れてきた人は、CHREDで自分で適当に16コマごちゃごちゃ描いてみましょう。結構それっぽく見えます。

"CHR:TN_OLBM1"


爆発データ(5コマ目〜8コマ目)です。
SPU5にロードしています。


"CHR:TN_OLBM2"


爆発データ(9コマ目〜12コマ目)です。
SPU6にロードしています。


"CHR:TN_OLBM3"


爆発データ(13コマ目〜16コマ目)です。
SPU7にロードしています。