風薙鳥 ゲーム制作日誌

マップ描画方法の変更と、ウィンドウの改良

ゲームライブラリSFMLで、モンスター育成ローグライク(ダンジョンRPG)を制作中です。

引き続き、ウィンドウなどの画面の改良を進めています。

セリフを表示するウィンドウを一新しました。
ウィンドウ本体を透明にして、枠画像の上にセリフを表示するようにしました。



前々から、キャラ名を表示する別枠が欲しかったんですよね。
でも、ウィンドウだと矩形にしかできないので、画像を使うことにしました。

---

メニューからのセーブを改良しました。
セーブを実行する前に確認をするように。
それと、セーブ前後の状態を表示するウィンドウを追加しました。



「凍える巡り合い」で、セーブ前後の変化を見比べられるのが便利だったので、ローグライクでも採用です。
これまでのセーブ操作画面は、簡素すぎましたね。

---

今さらですが、マップの描画方法を一新しました。
SFMLの公式チュートリアルに掲載されている、頂点リストを使ったマップの高速描画を試してみたくなったので。

今までの方法は、あらかじめマップ全体を描画して記憶しておき、必要な部分だけを切り出して描画する方法でした。
毎フレーム2回の描画で済むため、描画は高速です。
(※2回必要なのは、キャラクターの下になるタイルと上になるタイルがあるからです)

しかし、マップ全体という巨大なレンダーテクスチャを2つ保持する必要があり、メモリ消費が大きいのが欠点でした。
しかも、なぜかダンジョンは別のレンダーテクスチャになっていて、合わせて3つもありました。

新しく実装した、頂点リストを使った描画は、毎フレーム、視界内の全タイルを描画する必要があります。
でも、その全タイルを一度だけで描画できるんです。
実際は、各レイヤーと、キャラクターの上になるタイルを分けないといけないので、数回の描画になります。

描画速度は、今までの方法より若干落ちるのでは、と予想しています。
でも、メモリ消費は格段に減りました。
サイズの大きいレンダーテクスチャ上位3つが、一気になくなったわけですからね。

以前、レンダーテクスチャの使いすぎで、低スペックパソコンで表示がおかしくなったことがありました。
その時は、レンダーテクスチャを削減することで解決しました。
しかし、よりスペックの低いパソコンでは、まだ問題が起こるかもしれません。
なので、巨大レンダーテクスチャ3つの削減は、大きな成果になりそうです。