見出し画像

Zbrush新開発プラグインのベータ版が完成

(約 2,400文字の記事です。)

難航しまくったZbrushの新プラグインだが、今日、ようやくリリース用のベータ版の動作試験が終了した。長かった。かな~り、長かった。これまで仕様が二転三転し、決まったところでいったん完成とした。

だがそこからが長かった。もう一度の仕様変更があろうとは……。

Zbrush 2022と2023は「中身がかなり違う」

あ、これ、性能とかの違いじゃなくて、内部の構造の話。なので普通の人には関係ない。というか分かる人は多分、ほとんどいないと思う🤔

だが今回、ウィンドウIDを扱うプラグインだったので思い切り2022のバグだらけの悪影響を受けた。対して2023はかなり「まとも」になっている。

というのも、Zbrush 2023対応のベータ版を仕上げてから2022対応版での動作テスト中にあり得ないZscriptのバグの山がZbrush 2022に残っていた。


仕様変更中にまた「2022特有の致命的なZscriptのバグ」

1つ2つじゃない。20個以上ね、これ1つ1つに例外処理は、ちょっと現実的じゃない。そのため大幅に仕様変更が必要だった。

そう、これもまた2022特有のものだった。同じ方法で2023を試したらそんなことなく。なのでひっそりと2023は「まとも」になっていた。

とは言え、機能面で2022と2023の違いに魅力を感じるユーザーが少ないのもまた事実。2022ユーザーが依然として乗り換えないのには理由があるのだ。

なので何としても2022対応版「も」作らなければならない。かといって2種類作るのはメンテンが大変だ。なのでプラグイン自体は両対応にしたい。だが恐らくはユーザー設定ファイルは2022用と2023用で別れることになるだろう。

また仕様が変わった。

最終的にベータ完成から更に4日間もかかった。4日間も、だ。これはかなりの大改修で、よくもまぁスパゲッティーコードにならなかったもんだ。自分を褒めてやりたい😭

操作対象はZbrush内の全ての○○だから

新開発のプラグインは、特定のボタンを特定に操作するというのではない。Zbrush中にある複数の○○を自由に××することができる、というもの。だが複数をそれ全部をチェックすることは現実的じゃない

もしZscriptが完全に正常なら、1つの○○で正常なら全ての○○で正常に動作する。論理的にはそうだ。だが今回、Zscriptのバグもたくさんあったし、Zbrush 2022での実装上のバグもたくさんあった。そのため「一部の○○では挙動Aとなり、他の一部の○○では挙動Bとなる」という、論理的にあり得ない状態がたくさん発生した😭

そう、Zscriptの一部は仕様に沿って動いてくれない。バグがある。今回はこれが致命傷になった。

ループ文で自動で総チェック

もう手に負えない。なのでデバッグのための新たなツールをZscriptで作る羽目に😭デバッグのためのツールだ。そしてそれをループ文で回して全ての○○を自動でチェックさせる。結果はバイナリファイルで出力させ、編集し、エクセルなどで一気に閲覧する。

1対1の関係のはずが、1対2がたくさんあった

その結果、まぁ、2022にはぽろぽろと「論理的にはあり得ない挙動」が見つかったわけです。1対1の対応関係だと思っていたが、数十個は1対2の関係に。

それでは全然Identifyできないぞ。

それに対して2023はほとんど1対1だった。最初に2023から開発スタートしたのも裏目に出た。1対1なら自由に相互変換できるが、1対多となった瞬間にこの仕様が一気に崩壊した。そして結局相互変換無しにすると、データの2022と2023との変換ができない。つまり仕様として「2022専用の設定データ」と「2023専用の設定データ」となる。

なのでユーザー様にとっては2022のデータを2023に引き継げず、2023に移行時には新規でユーザーデータを作り直してね、という制約が生まれた。残念である。

高機能を削る方向で仕上げた

こんな感じで、相互変換前提で作ったものを変換なしにしたのでアルゴリズム的にはスッキリした。相互変換機能をバッサリとカットし、整合をとればいい。理屈はそうだ。だが複雑化した相互変換機能を綺麗に切り取るのはやはり大変。結局2日かかって、今夜、ようやくZbrush 2022と2023とで正常な動作を確認できた。

ようやくベータ版の完成です😱

予算オーバー所の話ではなく、これはもはやZbrushプラグイン開発者としての意地である😤なんとしても仕上げて世に放ちたい。

シンプルなものをシンプルに使ったもらうために「仕組みは超絶複雑化」している

ユーザーにとっては極めて簡単に、かつ安全に使える設計にした。言葉で言うのは簡単だが、それをZbrushの内在バグをかわしながら仕様通りにシンプルな使い心地を実現するための仕組みは、全然シンプルじゃない。メチャクチャ複雑だ。

今回の仕様変更で多少はシンプルになったものの、その際に内部をきちんとカプセル化しておいたからこそ発見できた「最後にまたZbrush 2022の条件分岐でひっかかったバグ」にも、何とか気付けた。まさかそんなところで!?という部分の分岐に引っかかっていた。


だが何とか乗り越えた。もう9割方のバグは潰せたと思っている。



明日からようやく営業活動に

ソフトが9割方完成したので、後は営業活動だ。作りかけのWebサイトの下書きを仕様変更に合わせて修正しないと。またZbrush 2022ユーザー用に詳細な注意点の記事が必要になった。

疲れた。とりあえず今日は乾杯🥂



今回の創作活動は約45分(累積 約3,217時間)
(887回目のnote更新)

読んでくれてありがとう。気長にマイペースに書いてます。この出会いに感謝😊