2019/10/30 01:05
そういえば現行のTJAP2fPC、TJAP3のソースコードを署名外しでビルドした時の挙動がどうなってるのかを忘れてしまいました。
どいいますのも、なんでFDKあたりに署名必要だったのかを忘れてしまったのです。たしか各種DLLの置き場所をexeと同じ階層以外にするためだったとは思うのですが...

(以下ほぼDTXManiaの話。DTXブログは気軽に書けないし、OSDNのフォーラムは多方向的な場所なので)
それから試していないのが新環境になってからのDTXManiaの動作関係。
CPUがRyzen7 3700X、グラボは従来と同じGeForce GTX750 Tiの環境ですが、新たにWindows10という要素が加わっておりまして。
これでWASAPI関係がどうなるのか。Win10のWASAPI共有は低遅延(正確には低間隔更新)が使えるそうなので、その辺りの検証もしたいのです。

2019/8/17
しばらくお休みします。(もともと休んでただろとか言わない。)
なんか新しくやるにしても自由に作れない。
今までは一部をキャプチャ切り抜き画像で対応しても、暗黙の了解として通せてきた。
ただ、いつの間にやらスキン関係のコンプライアンスが急にBMS並に厳しくなってしまったような流れができて、トレスだけでは厳しいものも頑張ってトレスしなきゃいけない...という強迫観念が自分の中ではあって。

あと先月あたりからTJAP3界隈の流れを追うのもやめました。
「TJAP3あるいはその派生に対する抑止力として動く」というプラシーボ効果を信じるより、普通にFGOやらドラムやらやったほうが面白いですし。画像作ったりするなら身内向けのコラ画像作るほうが楽しいですし。

2019/7/6
まあとっくの昔に予想はしてたんですけど、自前ですらないビルドに自前ですらない本家風スキンをセットにしたベーシックセット(大失笑)を出す人って絶対出てくるんですよね。
昔私が本家風表示を封印していた時も「普通に考えて解析されてそれが拡散されたら終わりだよなぁ...」とビクビクしながらコマンド解禁制にしていたもんです。当然この時はみんな旧バージョン使ってましたけど(

ともかく、忌み嫌われるようなセットを配布するようなシツレイな方も、それを求めてしまう方も、目立つところでやってると思わぬところで損しちゃいますよ。
未だにDiscordのコミュニティ(て言うんですか?アレ?)を非公開な場所だと疑わず信じてるような方は要注意。

最近の太鼓に関する感想。
AI演奏モードを最近知ったんですけど、ナムコ博多バスターミナル店で再起動やらかしてからモチベが0になりました。(いかんでしょこれ)
COMの細かい挙動については動画を撮影しないと判定数のデータを取れないので...考えないことにします。
(※あの様子だと判定精度までしか見ていないので、勝利数を稼ぐならいきなり高難易度譜面を連続プレイしてレベルアップしないほうがいいのかも)

6/28
バナパスポートカードはRC-S310で読み込めません。
TJAP2fPC、またはその派生版をICカードに対応させたい方はぜひ参考に。

6/19
>開発者・開発見習いの方へ
一般の方が誤認しないよう、「COINS」「フリープレイ」のテロップやオンラインマークを入れないことを推奨します。
(初めての方がテクスチャ追加して遊ぶなら、描画制御が難しい数字フォントじゃなくて1枚テクスチャのほうがいいですよ...)

6/10
DB接続のためのプラグイン作り始めました。まだ本体がDB対応してすらいないけど。
作りかけ状態でGitに出すとえらいことになりそうな予感がする(つまり未完のままリポジトリが残る)ので、完成してから出します。

あと譜面読み込みメソッドを今度こそ更新したくなってきました。細かいことはIssue#42に書いてます。
CDTXの構造が1譜面で1つのファイルしか読み込めない上に1難易度しか読み込めないので、多人数プレイで完全に無駄が発生しているのをなんとかする。
たぶん現状のlistChipや演奏状態の集合体をCDTX、そして譜面読み込みなどをするのは別の静的クラスに分離。構造次第では4人プレイも別難易度読み込みも無駄無くいける...はず。

6/8 12:26
<前回からの更新>
・2人プレイ時にミスするとコンボ音声が再生されなくなる不具合の修正
・COURSEより外にかかれているBALLOON命令が無視されていたので修正
・DB関係の準備

なんだかんだでDBまでは実装したいです。多分テーブルの継ぎ足しばかりになって正式リリースまで1年かかるとかやっちゃいそうですけど(ぉい

6/4 1:08
一応書いておきます。
・TJAP3のコントリビューターにはなりません。
・TJAP3をforkして改良版を作ることはありません。
・TJAP2fPCは一応開発終了しません。長い休みという名の平常運転です。

このタイミングで「TJAP3の開発に参入する」というのは、AioiLightさんやろみゅ~?さんやその他コントリビューターの皆さんへの裏切りとなってしまう...と私は考えています。
今もしませんし、この先なにかあっても参入することは無いでしょう。

というか最近めちゃくちゃ忙しいので...(FGO関係無く忙しいです)

5/24
開発やってません。
最近平日忙しくなってきまして...まあそれ以前の問題かもしれませんけど。

開発者支援として、潜在的なメモリリークの場所を書いときます。
・曲DBチェック&生成の完了後に選曲画面のOn活性化を使いまわしているためテクスチャの多重生成が発生する(現状の対策は根本的な解決方法とはいえない)

5/10 23:11
何とは言いませんが落ち着くまでこのページの公開を中止していましたが、まあいいんじゃないかなというレベルまで落ち着いたので再開します。
色々なことを考えて落ち込んでいたモチベーションが全て戻ったわけではないので、次の更新がいつになるかは保証しません。

DTXManiaとTJAP3の間の存在...というのも色々複雑な心境でございます。
下からは厄介な案件が舞い込んでくる、その度に上から縁を切られるんじゃないかと考えて胃が痛くなる。
とはいえここで全て手放してしまうと、僅かに残されていた制御力も消えてしまい、暴走に一切歯止めが効かなくなってしまう。
現状維持という形を取り続けてはいますが、この先どうなることやら。


P.S.ページの共有リクエストは1クリックにつき1回メール通知されるんで正直言って迷惑です。あとGoogleアカウントの名前に本名を入れるのは少し考え直したほうがいいですよ。

4/30 10:45
平成最後の日だそうで。
前々から宣言してるとおり、今日TJAP2fPCの最新版出すとかはありません。そういうのはたぶんTJAP3がやってくれる。

実はこのソフトに至ってはバージョン付けてリリースとかが本当に面倒になっていて、本音を言うと「欲しい人が勝手にソースコード落として自前でビルドしてくれたらいいじゃん?」とか思ってます。
でもそうはうまくいきません。「ビルドしたいけどうまくいかん」という質問を頻繁に見かけている現状、一定数は自前ビルドを完遂することができていないということなのでしょう。
そこで出てくる発想が「じゃあ自動でバイナリパッケージを作ってくれるシステムを構築すればいいんじゃね?」というもの。
PCSX2やPPSSPPを使っている方は馴染みの深い(であろう)buildbotというスグレモノがございます。
まあ今それが構築されていないということはねぇ...面d(お察しください)

4/29
<前回からの更新>
・譜面分岐ガイドを2人プレイ対応のレイアウトに変更

リソースをDTXManiaに全振りしています。わずかに残ったリソースはtjaシミュレータの新たな方向性の模索に使います。
SoundDeviceTypeやらなんやらが面倒すぎます。TJAP2fPC側への実害は無いんですけど、なんかその手の質問見てるとイラつきます(じゃあインターネットやめろ)
特にDirectSoundの存在と、WASAPI排他モードでの録音できない問題(実は回避可能)、ASIOの存在が厄介。
○DirectSound
・レガシー
・ゴリラではない私でも遅延がわかる
・OSでBufferSizeが調整されるため、ユーザーが難しい設定をせずとも音割れしないことが約束されている。

○WASAPI排他
・録音ができない(設計上回避が難しい。ただしサウンドルーティング系のソフトを使えば回避できる)
・設定次第では音割れを起こす(お前BufferSize調整してないだろ?)

○ASIO
・使用できるデバイスは限られる以上ASIO4ALLに頼らざるをえないが、BufferSizeがDTXMania側からいじれない(ASIOのBufferSizeはドライバ側での変更が推奨されている)
・WASAPI同様、設定次第では音割れを起こす

個人的には
・DirectSound→廃止
・WASAPI排他→残す。ただしBufferSizeをユーザーに認知してもらう必要がある
・ASIO→TJAP2fPCやTJAP3の利用者層を考えると廃止...かなぁ...
こうする必要があると考えています。
でもユーザーの「自作譜面の動画を録画したい」という要求を満たす必要があるので、SoundDeviceの選択肢に「WASAPI共有」を追加することも検討しています。

そもそもWASAPIには「排他モード」と「共有モード」という2つの再生モードがあって、
排他モードはOSのサウンドミキサーを通さず、再生デバイスに直接音を届けるため「遅延を小さくできる」が、1つのアプリしか再生デバイスを使えなくなる(→録画アプリでサウンドを録音できない)
共有モードはOSのサウンドミキサーを通すため、「他のアプリケーションと同時に音を再生することができる」が、サウンドミキサーで「ミックスする分の時間だけ再生が遅延する」
という特徴があります。

つまり、共有モードでは遅延はするものの録画自体はできる。録画の要求は満たせますね。
さらにDirectSoundほどレガシーな技術でもありません。
※ちなみにWindows10のWASAPI共有モードには、Win8.1までのWASAPI共有モードよりも低遅延にできる機能があるそうですが、それはまた別の話。

SoundDeviceTypeに関するユーザーの理解度を上げるのができないのであれば、それに対して「選択肢を減らしてあげる」というのもアリなんじゃないかと。

4/17
トップページのよくある質問に「音割れに関する質問」を追加しました。
現代のPCではこの解決法が一番有効かと思われます。DTXManiaのFAQも読んでね。(そしてその調子でDTXManiaXG Ver.Kの開発メンバーになるんだ)

そういえばVisualStudio2019が公開されたそうで。
とりあえずデスクトップ機とノート機の両方に入れましたが、DTXManiaXG(Ver.K)もTJAP2fPCも試してはいません。
消費メモリも少ないらしいので、これからの開発者の推奨環境を2019にするのもよさそうかも...と考えてみたり。

4/7
<前回からの変更点>
・曲選択画面の左上のテキストをStoryboardでアニメーションさせてみる
・難易度選択画面から脱出する時にアニメーションが終了するまでカーソルの移動を抑制するよう変更

なんでかよくわかりませんが、難易度選択画面から脱出する時の資料を撮り忘れていました。
おかげで資料が無い場所はめちゃくちゃ適当な仕上がり。(Storyboard化する前もですけど...)

ノートPCに入れてるtjaが少なすぎる(Daydream Cafeとめたまるとドラゴンスピリットメドレー本家譜面とPOP STAR本家譜面しか無い)ので、ちょっと増やさないとダメかな。

3/24
<前回からの変更点>
・選曲画面のプレビュー音声の再生時にプチフリーズする現象の改善
・「笑顔になれる報告」難易度選択画面の複数プレイヤー操作に対応する準備
・難易度選択画面のプレイヤー吹き出し画像を仮に追加
・難易度選択画面でポップアップ系の画面を開いて決定操作をしたら、難易度選択画面も同時に決定操作が実行される不具合の修正

選曲画面のプレビュー音声を生成→再生する部分を非同期メソッドにすることでプチフリーズを解消することに成功。
(※ただなんかループが怪しいような気がする...いい解決法は無いものか...)
面倒なので4月1日は何もしません。

3/7
とりあえず壊れたHDDのデータを復旧。

3/1
HDDが1台故障しました。(通算2回目3年ぶり)
TJAP2fPCへの直接的な影響はありません。

それからちょっとずつWAMのインストラクションを作ってたりします。完成したらどこかで公開する予定。

2/23
<前回からの変更点>
・ゴーゴータイム開始時の炎アニメーションをStoryboard化
・その他諸々
・「笑顔になれる報告」の準備
メインPCがchkdiskのせいで使えないので腹いせに真夜中の開発。(ちょっとだけですけど)
ゴーゴー炎のアニメーションは1コマごとの拡大率がコードに書いてあったので、スプレッドシートでグラフに起こしておおよそのアニメーション構造を把握、
既存のCCounterの数値からアニメーションの時間を計算して終わりっ!見た目はそれっぽいけど細かい比較とかできないんで100%の保証はできません。
久しぶりの「笑顔になれる報告」は人様のパクリネタです。でもコード自体は自力です。

そういえば何故iOS版やSwitch版のゴーゴー炎は加算合成ではないのでしょうか。


2/17
ついにDTXMania2からWindwosAnimationManagerを使うための色々なコードを移植できました。
DX11からDX9に移すの意外と楽だった。

→どんなことができるの?
そこまで頭使わずにアニメーションを組める。
組み方次第では超超超複雑なアニメーションだって作れる。
試しがてらリザルト画面入り時のアニメーション、譜面分岐のアニメーション(AC7~14)に適用してみました。
譜面分岐アニメ制作の様子は一昨日深夜の配信を見ていただければ。

今後の展望
・ポーズメニューのリニューアル
・SQL(もうMySQLで作ってSQLiteに作り変えるほうがいいような気がしてきた)

それからさらっと配信したとか言っていますが、今後の配信の予定は未定です。
突発で配信する時はTwitterに書きますが、ちょうど配信してるところに遭遇できたらラッキー程度で。
(放送リアルタイムで見てる人なんて多くて3人ぐらいですけどね)

2/12 24:20
佐世保に出張してる間にWindowsAnimationManagerを使った高度なアニメーションを実現する仕組みをDTXMania2からから移植することができました。
細かい話は後ほど。

2/2 25:02
私怨とか一切抜きで業務連絡。
GitHubのIssueやその他システムの仕様を使って他者との喧嘩や牽制をしたりするのは、開発者として恥ずべきことなので控えてください。
他者を超えたいのであれば自分がそれなりのものを作って、周囲から良い評価をもらうことが一番です。営業妨害はいけませんぜ。

去年の10月~12月の日誌を過去ログに入れました。1ヶ月経ってやっと整理したぞこいつ。

1/31
必死こいてDTXManiaXG(Ver.K) 4.01のSharpDX移行作業を進めてます。(Ver.Kのブログに書けよとか言わない)
とりあえずSampleFramework、Sound関連、Input関連のコードを移植(丸コピ)して、それ以外のコードは手作業でVer.K向けに適用。
ちなみに一番しんどかった作業はSlimDXの形跡をSharpDX向けに書き換える作業。というか今もやってます。

注意点として
・自信なければSampleFrameworkは全コピペ
・キーコード関連がSlimDXと異なるので、SharpDX側で用意されているキー番号定義を用いるとキーが一切反応しなくなる
書き方としては
(int)SlimDX.DirectInput.Key.Up

using SlimDXKey = SlimDX.DirectInput.Key;
(int)SlimDXKey.Up
みたいな。

1/27
取り急ぎ。
散々やってくれと言われている(気がする)64bit対応ですが、TJAP2fPCまたはその派生版で対応する必要がある課題は以下の通り。
・SlimDX→SharpDXへの移行(SlimDXを64bitで再ビルドする必要があるが手順が面倒なため)
・xadec.dllの廃止(xadec.dllはソースコードが現存しない32bitのdllであるため)
・SoundDecoder.dllを廃止して他の方法でデコードする(同じくソースコードが現存しない32bitのdllであるため)

で、DTXMania本家ではSharpDXへの移行は終了していたのですが、下の2つは手がついていませんでした。
しかし2019年に入ってから大きな動きが出てきまして...
・xadec.dllの代替となるlibbjxa.dllなるものが海外の有志の手によってリリースされる
・SoundDecoder.dllの代わりにBass.dllの機能でoggとmp3をデコードする処理の実装

これでおおよその問題が解決したのです。
この対応は近いうちにウチでも取り入れます。
Ver.K 4.00→TJAP2fPCの順番になるので、どれだけ時間がかかるかわかりませんけど...

1/13
Matrixの行列について(覚書)
Direct3D9のMatrixで拡大縮小、軸回転、移動を行う3D描画をする場合、以下の順番でコードを書くこと。
Scaling→Rotation→Translation
<例>
SlimDX.Matrix matScoreTxt = SlimDX.Matrix.Identity;
matScoreTxt *= SlimDX.Matrix.Scaling(0.6f, 1.5f, 1f);
matScoreTxt *= SlimDX.Matrix.RotationY(C変換.DegreeToRadian(-40));
matScoreTxt *= SlimDX.Matrix.Translation(-494f, 282f, 0);
this.txScore.t3D描画(CDTXMania.app.Device, matScoreTxt, new Rectangle( 0, 50, 88, 28 ));
(※Ver.K 4.0x開発版のスコア表示から)

Matrixでの乗順は A×B ≠ B×A (順序守らないとダメー)であり、ちゃんとした順でなければパースペクティブが崩壊してしまう、とのこと。(FROMさんより)

2019/1/3
あけましておめでとうございます。
ひっそりと開発しています。...といっても全然モチベ無くてちょっといじって終わりって状況ですけど。
TJAP2fPCの今後の展開ですが、たぶん目立った更新は今後無いかと思われます。
まあうかうかしてたらTJAP3にやりたいこと全部持ってかれたので、作ってもユーザーに「あっそ」と言われるぐらいの更新しかできないってのが正しいのかも。
向こうに比べるとこっちは5年前と変わらないレガシーなコードですし、今後forkするならあちらがオススメだというのは変わらないですね。

<ひとりごと>
・風邪ひいてつらい
・画像作りたいけどリモートじゃ無理
・大規模なリファクタリング起こす気になれない(画像も無いからプロトタイプすらきつい)
・データベースがリアルタイムで見れないのがきつい。将来を考えて少しの編集だけでMySQLに組み換え可能な構造にしてもいいのかなー...
・自宅環境とじっくり向き合える時間がほしいです。自分から捨てすぎました。