avelantis 01 : DxLib3.10a導入に伴うデバッグ

00001

休日はavelantisを弄って過ごす。
1年半ぐらい触ってなかったので、DxLibもだいぶ更新されていたらしく。
今回はDxLibの更新に伴って出てきたバグのデバッグ。
主なバグはDxLibの種々の取り扱いが厳格になったことが原因。

VisualStudioの最新版も出てるし、このゲームが完成するまでにどれほどの時代が移り変わるのだろう…。
RPGやシミュレーションも作ってみたいのだけどな。まぁ人生は長い。

以下は作業中に使用した具体的なメモ。



BGM
 ゲームオーバー後、ゲームを再開するとBGMが全滅曲のまま。
 そのままゲームを続けると、曲が再生されない。
  →ポーズ前にプレイ中の曲のフェードアウト→フェードアウト完了→自動でBGM削除→再生できないという糞設計。解決。
 道中でゲームオーバーすると、そのステージのボス曲が再生されない
  →解決。
背景
 3Dモデルが読み込めてない(or表示できてない)
  →mqoファイルをUnicodeで保存してしまっていたみたい。Shit_JISに変換して解決。
 3Dモデルが動かない →マルチバイトだと動く。DxLib3.08cまで正常に動作。
  3.08eだと一部表示……4面のみ表示に支障なし。先に3面、5面を再生してから4面を再生すると4面もNG。
  →position,target,upvecの関係を再考のこと。upvecはposition,targetにより平面内に制限されるはず。
   →以前のソースをデバッグで検証してみたが、upvecに有効な値を入れていないため機能していないのが明らか。なぜこのソースで動いていたのか。
  →Layerを通すと表示がおかしくなることが判明。要追跡調査。
   →Layerの問題ではなく、描画画面のクリアのために行なっていた画面全体へのDrawBoxが3Dモデルの前面に描画されていたことが判明、解決。
    また、SetDrawScreenによるカメラ位置/カメラクリッピング距離のリセットが厳格になった模様。
Layer
 Layerクラスの動作全般がおかしい
  一時停止時のBlurが小さくなってる。 →DxLib3.07aまで正常に動作
   ↓の仕様変更が原因と思われる
    画面の横幅とぴったり同じサイズの画像はテクスチャ分割無しで読み込むように処理を変更。
   →InitShaderVertex(シェーダに渡す頂点データを作る関数)において、画像サイズからテクスチャサイズを推量していた部分を、テクスチャサイズをGetGraphTextureSizeで調べるように変更して解決
  ボス背景の歪みエフェクトの継ぎ目が変
   →最新のDxLibだとなぜか解決
  ボス会話時の立ち絵の色
   →DX_BLENDMODE_INVSRCを減算合成に変更し解決。なぜこんなコードで動かしてたのか不明。
  ボス会話時、キャラ登場時の色がおかしい
   →MakeScreenの仕様変更が原因(SetDrawValidAlphaChannelGraphCreateFlag関数でなく、MakeScreenの第三引数で透過を指定することが強制されるようになった)
  2面ボススペカ背景の乗算する画像の表示がおかしい  →DxLib3.08eまで正常に動作
   →どうも元画像のalpha>0の部分がalpha=255として処理されている感じがする。原因不明。優先順位低いため保留。
   スペプラじゃなくステージ中のスペルだと逆に暗すぎる。超謎。
    →ステージ中でも1回ポーズするとスペプラのときと同じになる。謎ww
    →ポーズ時に使用するピクセルシェーダ(Blur効果)のSetPSConstFが原因と判明、ピクセルシェーダ使用後はResetPSConstFでリセットすることにより思惑通りの表示になった!解決。
1面ボス通常、2面全般
 背景が明るすぎて弾が見えない。光弾は自重すべき。
  →エフェクトの指定がずれてて通常弾が光弾になってたw
3面
 道中の敵がいない場合がある
  →背景と連動させるという愚行をやめる

  1. コメント 0

  1. トラックバック 0

return top