忍者ブログ

DTXManiaXG(ver.K)開発日誌

「-真のX-Gradeを見るまで俺は止まらない-」 DTXManiaXG(verK)の開発ブログです。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

4/30~5/3 メモリリーク大幅修正で修正した点

実家に帰ってた時、偶然にもメモリリークしているテクスチャがどこにあるのかが表示されるようになったので色々原因を突き止めてました。

その中で一番重要な点を書いておきます。(今後の再発防止)

(CActivity管理下のクラス)On活性化、OnManagedリソースの生成メソッドで再侵入検知をしていない
解放せず同じCTexture変数に再度テクスチャを生成するとメモリリークが発生します。
つまり既に生成されているかチェックしていないにも関わらず、先に挙げた2つのメソッドに侵入するとメモリリークが何回も発生するわけです。
CActivityには活性化したかのフラグか存在しているので、

if( !this.活性化していない) {
}

このように書いてやるのが正解です。

これは普通のCTextureも同じで、選曲画面で画面からはみ出した曲名テクスチャをきちんと解放していなかったのがだいぶまずかったです。
さらにバー中央の曲名テクスチャに関しても、生成前に一度解放処理を行ってから生成するようにしました。
解放処理が挟まると重くなると見せかけて、(あくまでも自分の環境ですが)こちらのほうが速いという新事実。

それからC# 6.0以降は「Null条件演算子」なるものが使えます。

this.txTEST?.Dispose();

現行版ではヘルパーメソッドとして「CDTXMania.t安全にDisposeする( ref Object)」を用いているのですが、この演算子でショートカットできるというわけですね。
ただ全部のコード全箇所での変更にはだいぶ時間がかかるので、TJAP2fPCやVer.Kでの最適化はもう少し後になるかと。
(※FROM先生のDTXMatixxを参考にしました。)
PR

Ver3.50リリース延期のお知らせ

ブログでの告知が遅れましたが、
私の準備不足で1月1日のリリースが間に合わなかった上に、思わぬ不具合が発覚してリリースが今日まで伸びてしまいました。
未だに不具合が解消したとはいえないレベルの状況ですので、リリースは明日以降になります。

お知らせ

スパムコメントが酷いため、英語のみのコメントを禁止とさせていただきました。
英語のみのコメントすると通らないので、英語のみのコメントをする場合はプロジェクトページの「フォーラム」または「チケット」にて投稿してください。

よろしくおねがいします。

判定画像

とりあえず判定画像全部作り終わりました。

で、その記念のUstの映像を。

Video streaming by Ustream

60fpsなのですごく滑らか!もう逆に気持ち悪いwww
そうそう判定画像といえば、現在性能改善の名目で1打目のプチフリの対応をしていますが、
原因がようやく判明しました。「判定画像」でした。
試しに前の形式の判定画像を使えるようにしてみたのですが、
使った結果、プチフリは起きませんでした。

現在の判定画像のサイズは1500x4080で1.1MBほどという結構なサイズの画像。
それをなんと3回も読み込んでいます。そりゃ重くなるわな。

以上のことを踏まえるとver2.36以前ならスムーズにいくはず。


それから追加要素としては、スコアの数字が追加された場合にちょっと上下します。
今のところ少々まく動いていませんが、まだまだなんとかできるはず。
コンボの100コンボごとのアニメーションは、根本的に見直す必要ががが。
考えてみた限り、実現するにはスコアのような増加前の変数と増加後の変数が必要です。
条件分岐で、

追加前の10の桁以下の数値 >= 96 && 追加後の10の桁以下の数値 <= 4

といった分岐命令が必要になります。

以上、kaireraでした。

遅延

すんごく分かりやすく「遅延」について解説された記事があったので。
4Gamer.net >> [CEDEC 2012]ゲームにおける「遅延」とは何か。「太鼓の達人」の事例から考える、初心者にこそ知ってほしい液晶テレビの遅延問題

DTXManiaではWin7だと画面と音の出力でズレがありました。さらにこの問題はかつてのXGでも起こった問題でした。
現在のDTXManiaではサウンドデバイスにWASAPI、ASIOを使用することで解決、
GITADORAでは基盤を交換して、さらに使用OSにWindows7を使うこと(多分ASIO)で解決しました。

しかしDTXManiaではフルスクリーン時に遅延がまだ残っています。
こういった問題を解決できるほどのプログラミングスキルを早く身につけたいものです。


遅延といえばもうひとつ。
当然ですが処理落ちした時にも遅延が発生します。XG3はそれの発展系です。
DTXManiaXG(ver.K)やDTXHDだと、動画に左右されてきます。
軽い順から並べていくと、
旧規格クリップ→640x360→1280x720(720p 30fps)→1280x720(720p 60fps)
といった順番です。

ギタドラ本家は多分640x360の60fpsの動画を拡大表示してかつフィルタをかけているんだと思います。
それかDirectShowに対応させて、H264を使ってるのかだと思います。

System16に基盤のデータがあるのですが、アスロンデュアルにラデ2400とかだと、
HDでかつ60FPSの動画再生はきついのではないでしょうか。コーデックにもよりますが。
試しにVISTAさんのHDクリップをHD画質&60fps、そんでDivxでエンコードしたのですが、
録画状態でなかろうが結構処理落ちが激しいです。
次に思いつくのがx264でエンコードする方法ですが、残念ながらFDK19だと再生できない様子。

さて、画質にも問題があるし、DirectShowも実装させたいけどその前に飛び散るチップとかかな・・・・

プロフィール

HN:
kairera0467
年齢:
22
性別:
男性
誕生日:
1997/08/11
自己紹介:
DTXManiaの新人開発スタッフ。
Maill:gennsou76573●gmail.com
(●を@に変えてくださいね。)

最新リリース

Twitter

ブログ内検索