Newグラディウス デモ (BG描画/制作/フレームレート)
BGスクロール
X1turboでスムーズなBGスクロールが出来ないかを考えていたのが、グラディウス制作のきっかけでした。
GRAM描画やCRTC調整で実現出来ないかと検証を繰り返した結果、PCGで少しづつずらしたキャラクタを定義してスクリーンに描画する方法が処理も軽く見た目も効果的でした。
現在は、GRAM BANK1にスクリーンを展開しDMAでTEXTに転送しています。
処理は 1~2msecほど要しています。
スクロール量は4ドット単位だとX1版と変わらないため、最低でも2ドットのスクロールを目標にしました。
実際にピクセルを置いて、繰り返しがあまり目立たない様に調整を行いました。
当初は単純で広い面積を取っている所をPCGで行い、複雑でワンポイントな部分を
GRAMとで使い分ける想定でしたが、現状はPCGだけで実現しています。
色味については、グラディウス2(FC) 火山面が非常に良く出来ていたので参考にしています。
(たまに色々なゲーム画面を8色で減色してX1版だったら…と妄想します)
2ドット単位スクロールにした事で、AC/FC版とはスクロール速度が変わりました。
できるだけBGスクロールを滑らかに見せるために、ステージ全体の長さや敵セット位置を調整しています。
実際には約1.5倍長くなっています。
フレームレート
今回のグラディウスデモは 20fpsで動作しています。
出来るだけなめらかな動作を狙っていたのですが、出てくるキャラクタの量、
描画量を計算すると20fpsが落としどころでした。
ちなみにX1版は15fpsでした。640x200でよく動作できていると思います。
キャラクタの移動量はAC/FC版の動画から算出し、なめらかな動きになるように少数値を調整しています。
Titledマップエディタ
マップデータ作成/編集は Tiled マップエディタを使用しています。
BGマップ作成
AC版の動画を元にBGマップを起こしています。
そこからキャラクタに量子化を行うコンバータで変換して、Titledエディタで編集できるようにしました。
スクロール速度を合わせてマップ全体の大きさを何度か作り直しました。
当り判定編集
地形当りデータも、Tiledの別レイヤーを使って設定しました。
出力データをビット単位の当り判定データに変換して使用しています。
ダッカーなど地形の当りを細かく判定する必要があるキャラクタは、一度当り判定を行った後、キャッシュとして当り判定インデックスを使って高速化を行っています。
敵セット編集
敵セットは titledのオブジェクト機能を使って配置しています。
配置データはエクスポートで出力されないので、.tmx(xml)ファイルを変換して敵セットデータとして利用しています。
BGM切り替えやボス制御もここで配置しています。
背景の星
星は1~4ドットの4重スクロールです。
画面消去後に星を書くので重ね合わせは特に行っていません。
全部で32箇所書き換えていますが、それほど処理がかかっていない割には効果的に出来ました。
ばらつきすぎず、重なり過ぎないように調整しています。