忍者ブログ

DTXManiaXG(ver.K)開発日誌

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

[PR]

×

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

DTXManiaXG(Ver.K) GT氏作成スキンについて

GT氏の長期活動休止に伴いまして、DTXManiaXG(Ver.K)のスキンの使用許可、改変(二次配布)関連を任されました。

...というのを実は昨日ツイートを見て初めて知りました。
(事後報告でも「ヴエエエ!?(ココア)」となるだけなので別になんとも思わない)

最近の様子を見てもわかるとおり、太鼓っぽいアレに集中しているのですが、近いうちにDTXでも動きを見せられたらなと思います。
PR

.NET Frameworkを4.7.1にバージョンアップしました。

タプル式を使うためにSystem.ValueTupleを入れたらDLLの問題で大混乱を発生してしまったので、開き直ってフレームワークを最新型にしてタプル式に標準対応させました。
これでもうDLLによる混乱は無くなるはず。

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を参考にしました。)

メモリリーク解決に向けて

皆様ご存知の通り、Ver.Kにはメモリリークという致命的な不具合が存在しています。

で、このメモリリークについてですが、
つい先日、Ver.Kの派生プロジェクト「TJAP2fPC」の派生プロジェクト(これもうわかんねえな)の「TJAPlayer3」の開発をしているAioiLight氏がメモリリーク対策をしたコードのスクショをツイートしていまして。
それがCTextureクラスのIDisposable実装を作り変えたという内容でした。
Dispose実装を修正するという発想に目からウロコ。

それから「選曲画面で動けば動くほどメモリが消費される」とのことで。
これは曲名描画処理を行っているPrivateFont(またはPrivateFastFont)クラス周辺の解放ミスでした。
AioiLight氏も実証していますが、曲名描画処理を消すとメモリの推移はほぼ正しいものになります。


....みたいな記事を書いてたら引っ越しの準備に追われ、気がつけば1ヶ月経っていました。
めちゃくちゃ忙しすぎて今もギリギリな状況でこの記事を復活させている段階でございます。

で、この記事を保存したのが3月13日22時58分。
この前日と3日後にDTXMania本家でも新たなメモリリーク対策が行われています。
これを適用したVer.Kが...ごめんなさい。まだ用意できてないです。
少なくとも今コミットしてないやつを放ったらかしたままどっか行くとかはしないので、期待しないで待って頂けたら幸いです。

リリース予告

この記事は「DTXMania Advent Calendar 2017」24日目の記事です。


さて、今月25日をリリース目標にして頑張っていたDTXManiaXG(Ver.K)4.00ですが、



正直...全く終わりそうにありません。
先月から多忙により、開発に時間を割くことができませんでした。

9月の終わりから一通り演奏できるんじゃないかレベルになっていたXG風表示は置いて、(これがなければみんなVer.Kを使わないとも言える)GITADORA風表示に着手しました。
時間が取れないながらも選曲画面、演奏画面と少しずつ手を加えていき、まあそれっぽく見えるんじゃないかレベルまではできています。
特に画像パーツを作る暇が無かったので「数字フォント」は致命的です。

不足点が多いとはいってもリリースしないわけにはいかないので、予定どおり25日にリリースしたいと思います。

なお、4.00以降はXGとGITADORAの表示が1つの本体で実現できます。というかできました。
これによって長いこと問題になっていた「XG本体とGD本体の格差」が解消されるはず。

出来ることは全てやりました。
皆様、明日は思う存分がっかりしてやってくださいorz
(※さらにデモ動画用の譜面も無い)


・明日の予告先発
有終の美を飾ることもない最終日の担当は山奈MIRさんです。というか私です。

プロフィール

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

最新リリース

ブログ内検索