Release 059について

  • DTXMania Release 059について、詳しく教えて下さい。?

 DTXMania Release 059について、詳しく教えて下さい。

【BGA関連の新機能】

  • #BMPzz: の機能拡張版である #BMPTEXzz: を導入。黒色でも透過されず、代わりにアルファで透過箇所(というか透明度)を指定する。今のところ PNG のみ対応。
    (→Direct3D Texture で描画するので、色々と注意事項あり。 例えば、1024x1024より大きな画像を#BMPTEXで使うと最悪DTXManiaやDTXVが異常終了します、など。)
  • スコープ画像チャンネル(C4,C7,D5〜D9,E0)を追加。 詳細は以下を参照。

    <スコープとレイヤー>

    • #BMP は、画像ファイルに "BMP番号" を付ける命令。
    • #BMP, #BMPTEX, #BGA, #BGAPAN は "スコープ" を定義し、それに "スコープ番号" を付ける命令。
      → スコープとは「ある "BMP番号" の画像に対し、 それをどうレイヤーに表示するか」を記したもの。
      #BMP, #BMPTEX, #BGA, #BGAPAN は、スコープが使う "BMP番号" も一緒に定義できる。
    • レイヤーチャンネル(04,07,55〜59,60)は、 任意のタイミングでレイヤーに "スコープ番号" を割り付ける命令。
      割り付けると同時にスコープが作動し、画像の表示を始める。
    • スコープ画像チャンネル(C4,C7,D5〜D9,E0)は、 任意のタイミングでレイヤーのスコープが使っている "BMP番号" をリアルタイムに変更する命令。 (レイヤーチャンネルだけだと、 #BMP, #BGA, #BGAPAN で定義した "BMP番号" がずっと使われる。)

 スコープ画像チャンネルを使うことにより、 レイヤーが表示した画像を次々と変えていくことができるようになります。

 例:

#BMP01: 笑顔600x355.bmp
#BMP02: 泣顔600x355.bmp
#BGAPAN10: 01  278 255  278 355  0 0 322 0  0 0  0 0  384
#00104: 10

 上記の例は、従来の #BGAPAN によるスクロールの例です。 第001小節の頭から終わりまで(384ct)、笑顔600x355.bmp がスクロールします。

 これに以下を加えると、

#001C4: 0201

 やはり第001小節の頭から終わりまで 384 ct かけてスクロールするのですが、 前半2拍は 泣顔600x355.bmp が、後半2拍は 笑顔600x355.bmp が表示されます。

 ch.04 で開始したスコープの現状(今どこまでスクロールした?とか)はそのままで、画像だけすっぽり入れ替えられることになります。

【スキン関連の新機能】

  • スキン用のフォルダ指定を可能とし、かつ2つ設定出来るようにした。
    Config.ini の [System] SystemData=... でデフォルトのフォルダを、 そして SystemDataCustom=... でカスタム用のフォルダをそれぞれ指定できます。

例:

SystemData=sysdata\default\
SystemDataCustom=sysdata\myskin\

→ データをまず sysdata\default\ から探し、 見つからなければ sysdata\myskin\ から探します。 Skin.ini (後述) についても同様に、 sysdata\default\Skin.ini の内容より sysdata\myskin\Skin.ini の内容が優先されます。 (sysdata\myskin\Skin.ini に記述されてない項目は、 sysdata\default\Skin.ini の内容が適用されます。)

初期状態では、

SystemData=sysdata\default\
SystemDataCustom=sysdata\myskin\

となっています。

  • いろいろなところで音が鳴るようにした。
    排他が○の音を鳴らそうとするとき、 すでに排他○の音が鳴っている場合には、 その音を止めてから鳴らします。

    音とループ再生・排他の初期関係は以下の通り。(後述の方法で変更可能)
種別 ファイル名 ループ再生 排他 備考
カーソル移動音 sd_move.wav × ×
決定音 sd_decide.wav × ×
歓声 sd_audience.wav × ×
チェンジ音 sd_change.wav × ×
キャンセル音 sd_cancel.wav × ×
StageFailed 音 sd_failed.wav ×
SETUP 音 sd_setup.wav
タイトル音 sd_title.wav ×
ゲーム開始音 sd_gamestart.wav ×
オプション画面 sd_option.wav ×
コンフィグ画面 sd_config.wav ×
ゲーム終了時 sd_exit.wav × 再生終了を待って、DTXManiaが終了する。
選曲画面 sd_selectmusic.wav ×
ステージクリア sd_stageclear.wav ×
フルコンボ時 sd_fullcombo.wav × ×
NowLoading中 sd_nowloading.wav × 曲データのLoadが終わっても「再生完了まで残り1秒」を切らない限り待ち続ける。
  • スキン関係の設定を記述する Skin.ini を追加。 システムフォルダの中に Skin.ini というファイルを設け、スキン関係の設定を可能にしました。 (ただし現在はサウンド関係のみ設定可能)

    Skin.ini を見ていただければ一目瞭然かと思いますが、 現在以下が設定可能。
    • システムサウンドファイル名

例:

StageSelect=sd_selectmusic.wav
    • ループするか(項目名末尾に「_Loop」を追加、値は 0:OFF, 1:ON )

例:

StageSelect_Loop=1
    • 排他にするかどうか (項目名末尾に「_Exclusive」を追加、値は 0:OFF, 1:ON )

例:

StageSelect_Exclusive=1

将来的には演奏画面中の BGA 領域やスコアの表示座標なども指定可能に?(需要なし?
あと、Skin.ini は削除しても勝手に再生(Config.ini みたいに)したりしないのでご注意を。

【OPTION/CONFIGURATION 新機能】

  • Configuration でプレビュー画像遅延時間を変更可能にした。(PreviewImageWait:)
  • ドラムに、Reverse、判定文字表示位置(Position)、Tightモードを追加。
  • ギター/ベースに、リバース、判定文字表示位置(position)、ランダムモード(Random)、Lightモード、Leftモードを追加。

(ギター/ベースの Combo は未対応(画面に入らない…) →現在は、判定文字表示を OFF にすると COMBO も消える。)

  • Config でドラム演奏を ON/OFF する項目を追加。(Drums:)
Drums Guitar 演奏画面
ON ON ドラム画面(+ギター画面)
ON OFF ドラム専用画面
OFF ON ギター専用画面
OFF OFF 選択不可
  • OPTION 画面で、ドラムパッドの AutoPlay の ON/OFF を全部一発で切り替える項目を追加。

【BOX 新機能】

  • 新しい BOX の作り方を追加。

    旧来の方法:フォルダ名を「DTXFiles.」+BOX名 にする。( → 今後も、この方法でのBOX作成は可能。)

    新しい方法:どんな名前のフォルダでも、中に box.def があれば、そのフォルダを BOX とみなす。
    BOX 名には、フォルダ名ではなく box.def 内に書かれた #TITLE が使われる。
    選曲画面での曲順はフォルダ名で昇順に並べられる。
box.def の例:
-------------------------
#TITLE: Jinbose
#ARTIST: おったん連合と愉快な男A・B・C
#COMMENT: カウベルは片手で16分連打。暴走・ドラッギング禁止。
#PREIMAGE: preimage.jpg
#PREVIEW: preview.wav
#FONTCOLOR: #FFFFFF
-------------------------
  • すべての MUSIC BOX に RANDOM SELECT を設置。
    サブBOX(フォルダではないので注意)までRANDOMに含めるか否かを、 Config.ini の RandomFromSubBox=... で選択できます。 (デフォルトは含める)

【新機能】

  • DTXMania.ini (現 Config.ini) にカラーモードの切り替え(16bpp/32bpp) が復活。(FullColor:)
  • 選曲画面での演奏履歴表示と、 過去のベストランクを表示する機能を追加。
  • プレビュー動画を指定する #PREMOVIE: を追加。
  • リザルト動画を指定する #RESULTMOVIE_xx: を追加。
  • log/DeviceCheck.txt に、 OS名、CPU名、システムメモリ容量、DirectXランライムバージョン、デバイス環境、タイマー環境(後述)のメモを記録するようにした。(これでいちいち自分でビデオボードの種類や容量を調べる必要がなくなる?)
  • 起動時に DirectX ランタイムのバージョンをチェックして、DirectX7.0a 未満である場合はダイアログを表示して終了するようにした。

これでもう、「欠陥エクスポート云々」のエラーは報告されなくなることでしょう。

  • WAV, #VOLUME, #WAVPAN, #BPM, #AVI, について、無限定義に対応。

無限定義というのは、たとえば従来だと

#WAV01: みゃー.wav
#00111: 01
#WAV01: ぎゃー.wav
#00211: 01

のような場合、2行目も4行目もぎゃーとしか叫びませんでした。 (後置優先)

これに対して、2行目はみゃーで4行目がぎゃーと鳴るのが無限定義です。 同じ番号が使いまわしできるということですね。

もともとBGAなどで番号が枯渇するのを防ぐための手段だったのですが…、 しかし #BMP, #BMPTEX, #BGA, #BGAPAN はまだ使えないという罠。 (使えねー!

以下のような問題が発生したため、BGA関係の実装は中断しました。

#BMP01: のりあ.bmp
#BGAPAN01: 01 ...(略)
#00104: 01       ← BGAPAN01 が のりあ.bmp を表示する。
#BMP01: しずか.bmp
#BGA01: 01 ...(略)
#00204: 01       ← BGA01 が しずか.bmp を表示してくれず、
              BGAPAN01 が しずか.bmp を表示してしまう。
  • 拍線シフトチャンネルを追加。
    ch.C1 に 02 を置くと、その小節内に限り、拍線がそこから表示開始されます。拍線の間隔は固定ではなく小節長倍率により変化します(従来どおり)。 なお、01 を置いても元に戻ったりしません。
  • 拍線・小節線表示指定チャンネルを追加。
    ch.C2 に 02 を置くと、その位置から、拍線ならびに小節線を非表示にします。 01 を置くと、その位置から表示が再開されます。 ただし、ch.50,51 を使って製作者が明示的に配置した拍線・小節線は、この影響を受けず、常にその位置で表示されます。(正確には、オブジェクト値 'zz' を使うとこの影響を受けます。影響を受けない線を置くには、01〜zy をご使用ください。)
  • 左シンバルチャンネル 1A, 3A(不可視), BC(空打ち) を導入。

【バグ修正】

  • ベースのBADサウンドがギターのものになっていたミスを修正。
  • GDA の BL 命令にカンマが含まれていると落ちるミスを修正。
  • 画像キャッシュが効いてなかったミスを修正。
  • #VOLUME に 0 を設定すると 100 にみなされていたミスを修正。
  • 小節線変更、BPM変更、BGAPAN が同位置にある場合に BGAPAN が優先されるケースがあったミスを修正。
  • #BGAPAN が終わった瞬間に画像が消えてしまうミスを修正。
    仕様どおり、最後の画像をずっと表示し続けるようにしました。 これで、とらうぃなどの「ちらつき」がなくなります。 (逆に、#BGAPAN 終了で画像が消えることを前提に作った BGA ではおかしくなりますが、 まだ見たこと無いので良しとしよう(ぉ )
  • DTXV で、#DTXVPLAYSPEED が 0.5 以下だと鳴らなかったり、 曲の後半から演奏開始しようとするほど 1.0 に近い値を指定しなければならなかったりしたミスを修正。
  • タイマークラスの初期化が行われず、 結果として(精度の悪い)GetTickCount()が選択されてしまうケースがあったミスを修正。

【仕様変更】

  • スキン画像について、dds ファイルを廃止し、png, jpeg に統一。
  • DTXMania.ini を Config.ini に改名。(拡張子の表示を切っているPCでは説明が面倒なので…)
  • 画像フォルダを data から sysdata に変更。(深い意味はない。)
  • ゲージの増減の方式を変更。
    • 旧方式:1チップごとに定量値増減。→ ドラムよりギターが不利。
    • 新方式:一定時間ごとに総合判定を行って増減。→ チップの密度が高いところは小さく、低いところは大きく増減。
  • デフォルト状態では JOYPAD 入力をどこにも割り当てないように変更。
    (最初から押されっぱなしになってしまうキーなどがあるとキー変更すら困難だったことへの対策。)
  • 難易度を切り替えた場合に、プレビュー(画像、音声)も追従して変わるようにした。
  • DTXMania.ini (現Config.ini) でのスピード指定の範囲を 1〜16 から 0〜15 に変更し、x8.5 を廃止し、x0.5 を導入。 (つまりは Option 画面と同じにした。)
  • #STAGEFILE を #RANDOM の適用範囲にした。(→ 曲読込画像を毎回ランダムに変更可能。)
  • Configuration で、ギターとベースが一緒だった各項目を分離・独立化。
  • ソートアルゴリズムを改善。どう改善したのか覚えてない。(ぉ
  • ドラムで選曲カーソルを移動した場合に、ドラム譜面のない曲はグレーアウトするよう変更。
  • 画面モード(全画面/ウィンドウ画面)切替時には演奏を一時停止し、 Wait a moment 画像を表示するよう変更。
  • ギター/ベースの Poor/Bad 時の音の鳴らし方を変更。
    • 旧方式:同じ形の一番近くのチップ音を鳴らす。スカった直後なら弾き直しも可能。
    • 新方式:形を問わず一番近くのチップ音に周波数変調(79%〜121%)して鳴らす。ヘタレ度抜群。
  • スキルポイントの算出方法を変更。
    → 独自の算出式を作成。 細かい計算方式は省略。ご希望があれば書きます。(ぉ
    パーセント表記(0..100[%])なので、スキルポイントというよりギタドキングのポイントに近い?
  • 入力をバッファリングするよう変更。入力漏れ・遅反応を回避できるか?ただし軸入力については従来通り。
  • 同じファイルを使う場合は、preimage, preview, premovie を切り替えないよう変更。
  • バスレーンのレーンフラッシュを、ピンクから白に変更。
  • ワイリング時の歓声を、ギターは左寄り50%、ベースは右寄り50%の位置で鳴らすよう変更。
  • Config.ini の DTXFiles=... の初期値を相対パス (".\")に変更。
  • ランクSSの文字色を黄から橙に変更。
  • NowLoading画面の曲名のアタマにつく「♪」を、文字から画像に変更。
  • BGA画像は演奏画面の構築後に作るよう変更。VRAM は演奏画面優先で。
  • 高精度タイマー(QueryPerformanceCounter)を導入し、 他の2つ(GetTickTime, timerGetTime)より優先的に使用するように修正。 また、選ばれたタイマを log/DeviceCheck.txt に出力するようにした。
    従来のタイマとの具体的な違いは、次の2点。
    • タイマ自身の精度が向上した(精度はCPUの周波数に比例)
    • 解像度がミリ秒より細かくなった(どこまで細かくなるかはCPUの周波数に比例)
  • 結局は CPU 依存なので、 機種ごとにタイマがずれる可能性があることは変わらないのだが、 ずれたとしても精度がマイクロ秒レベルなので気にはならないはず。
    また、タイマの精度が高いほどスクロールがきれいになる。 (FPS が同じでも。)
  • FPS の表示を、VPS(FPS) の形に変更。
    FPS (Frames per Second) は、1秒間に処理したフレーム数です。 VPS (Views per Second) は、1秒間に処理したフレームのうち実際に描画した個数です。

    例:1秒に1000フレーム処理できるPCで NoSyncSleep=5 の場合
    → FPS=1000, VPS=200, 演奏画面での表示は「FPS: 200(1000)」になる

DTXMania Q&A