ミニマップの作成
ミニマップですが、別にこれもローグライク必須ってわけでもないのでTIPSの方に。
通路の壁を描画するタイプと床を描画するタイプがありますが、床を描画するタイプでつくってみます。
当然ながら、マップ座標の1マスごとに1ピクチャ使って描画していきます。
なのでマップサイズが100×100だったら、最大1万枚+αのピクチャを使うので、どこかにミニマップ用のピクチャ番号をどかんととっておくといいと思われます。
さて、とりあえず床のドットとなる小さなピクチャを用意しましょう。
1×1ピクセルだとさすがに小さいですが、2×2ピクセルとか3×3ピクセルとかでいいと思います。
で、なるべく処理を軽減させるために、ランダムダンジョンを生成した時点で、あらかじめ不透明度0で全部ミニマップを表示してしまいましょう。
マップ横サイズ×マップ縦サイズ分ループさせて、移動可能なマスには床ピクチャを描画します。320×240なら1マス16ピクセル、640×480なら1マス32ピクセルなので、ここらへんを使えば画面上の描画座標も簡単に取得できそうです。
あと、マップ座標とピクチャ番号に互換性を持たせるとのちのち便利ですね。
こうしてあらかじめ不透明度0で描画しておくことで、1ターンごとの処理が主人公とその周囲の床ピクチャをピクチャ移動で不透明度255にすることだけで済みます。
ローグライクではとにかく処理の重さに余裕がないので、極力処理量を減らす努力が必要ですね。
で、床描画ができたらオブジェクト系をその上のレイヤーに描画していきます。
こちらでもオブジェクトのIDとピクチャ番号に互換性をもたせて、移動処理のついでに自分のピクチャのミニマップを動かしたりすると楽なんじゃないかと思います。
通路の壁を描画するタイプと床を描画するタイプがありますが、床を描画するタイプでつくってみます。
当然ながら、マップ座標の1マスごとに1ピクチャ使って描画していきます。
なのでマップサイズが100×100だったら、最大1万枚+αのピクチャを使うので、どこかにミニマップ用のピクチャ番号をどかんととっておくといいと思われます。
さて、とりあえず床のドットとなる小さなピクチャを用意しましょう。
1×1ピクセルだとさすがに小さいですが、2×2ピクセルとか3×3ピクセルとかでいいと思います。
で、なるべく処理を軽減させるために、ランダムダンジョンを生成した時点で、あらかじめ不透明度0で全部ミニマップを表示してしまいましょう。
マップ横サイズ×マップ縦サイズ分ループさせて、移動可能なマスには床ピクチャを描画します。320×240なら1マス16ピクセル、640×480なら1マス32ピクセルなので、ここらへんを使えば画面上の描画座標も簡単に取得できそうです。
あと、マップ座標とピクチャ番号に互換性を持たせるとのちのち便利ですね。
こうしてあらかじめ不透明度0で描画しておくことで、1ターンごとの処理が主人公とその周囲の床ピクチャをピクチャ移動で不透明度255にすることだけで済みます。
ローグライクではとにかく処理の重さに余裕がないので、極力処理量を減らす努力が必要ですね。
で、床描画ができたらオブジェクト系をその上のレイヤーに描画していきます。
こちらでもオブジェクトのIDとピクチャ番号に互換性をもたせて、移動処理のついでに自分のピクチャのミニマップを動かしたりすると楽なんじゃないかと思います。
- 関連記事
スポンサーサイト