忍者ブログ

批評

CardWirthPyとはなんだったのか(前編)

本文なし


 CardWirthPyはCardWirthのエミュレータである。
「1.50との99%の互換性を目指す」ことを掲げ、同時に「前進するべきではない、という事を必ずしも意味しない」として、新機能の実装も行っていた。
 だが慢性的な人の不足や、監督者本人の「私自身の要求を満たすために改良」という姿勢も相まって、仕様開発の方針は有名無実となっており、杜撰(ずさん)な手続きが横行。匿名による近視的な要望を五月雨式に追加し続けた結果、一部のユーザーの要望に答えたかわりに、1.50の再現性は放棄されたエンジンとなった。
 内部処理の再現も怪しく、活動が世間に認知されて10年経過しても、重大な齟齬が見つかっていた。
 野放図な改変を引き起こした原因として、監督者であるk4nagatsuki氏に「エンジンの改変は既存のシナリオに対しても二次創作になる」という観点が欠けていたことが有力視される。

 WSN仕様としてPy専用のシナリオも製作でき、熱心なシナリオ作者もいるが少数にとどまる。そのためゲームエンジンとしては1.50以前のシナリオを侵襲する形で利用するしかなく、CardWirthというコンテンツに寄生した存在となっていた。

 このような状態でありながら、使用ユーザーは2023年時点でCardWirthNEXTと二分していた。
 これは新規ユーザーが増えたためと考えられ、彼らは遺失シナリオをプレイする機会がなく、過去のエンジンも触らないため互換性や権利に関心がない。そのためPyをただ機能が強化されたCardWirthとして受け入れていた。



  プロジェクトの失敗

Pyの勇敢状態は、攻撃・渾身の一撃・会心の一撃・技能カードをそれぞれ1/4の確率で引く効果となっているようです。

つまり技能カードを引く確率が1/4より高いキャラクターは、勇敢化により弱体化することになります。実際、高レベル冒険者の多くにとって勇敢状態は有害です。

1.50の場合、勇敢状態でも残り回数に応じた技能カードが配付され、正常時と確率は変わらないようでした。こちらで実験した結果を載せておきます。



X(旧ツイッター)で話題になっていたのですが、残った行動順の謎も含めて正答らしき検証をされている方がいました。

現状の実害としては、Pyでは、防御力+1以上持った敵に固定値1ダメージで2ダメージを与えられないため、大量にダメージモーションを積む多段ダメージ系スキルが弱体化しているようです。



検証してみたのですが、これはそもそもCWでは効果コンテントの効果音は一次効果音扱い(対象に命中する前に再生されている)なのが、Pyでは二次効果音として扱われてるみたいです。Pyでは印象変わったな?というシナリオが結構あったんですが、演出自体が潰れてたっぽいですね。
WSN仕様の拡張では色反転と一次効果音を付けるという実装になっていますからそれも見直さないとなりません。
今までなぜ気づかなかったのか不思議なぐらい重大な問題に思います。



CWではバトルで使用するカードは画面上には表示されない山札に入っており、手札は山札から引かれてきます。そのため、アクションカード等消耗しないカードは手札から消しつつ山札に戻す必要があるのですが、その処理が正しくありませんでした。


 上記の引用は、すべて2023年に見つかった不具合だ。
 互換性に関して致命的な齟齬がボロボロ見つかっていた。
 言い換えるなら十年かけても99%の互換性はおろか、エミュレーターとしての役割すら果たせなかった
 
 この記事はNEXT問題から十年目に書かれた。Pyが世間に認知されて以降の時間と一致する。
 CardWirthの私家版としてPyが失敗したのはこれより何年も前だが、かつてのフリーゲームの、かつてあった企画の失敗を整理するという意味、そして選択しなければならない問題の通告にはいい節目だった。過去の清算である。


 いうまでもなく、この企画が十年以上続いて未達なこと自体がどうかしている。
 関係者は時間の感覚がおかしくなっているらしい。


 さて選択とはなにか。互換性である。 
 これはPyだけの問題ではない。「指定したエンジン(の仕様)でプレイしてもらう」シナリオ作者の権利がある。好きな機能を追加した、再現の甘いシミュレーターで許可なく使っていい、などという条件にだれもサインしていないのだから。
 放置すればすなわち、過去から未来まで、すべてのCardWirthユーザーが巻き添えになるからだ。

 これに関して「やらないよりマシ」とか、「みんなで成功させるプロジェクトだから」「人が足りない忙しい」などの妄言は通らない。
 互換性を持たせるかわりにCardWirthのシナリオを読み込めるという関係なのだから、絶対にやらなければいけないことなのだ。それも真っ先に。
 その肝心の互換性はほったらかしで、思慮のない改変、好きな機能だけ追加し、コンテンツにタダ乗りしたあげく一万回検証してくれる人を口を開けて待っていた――十年も。これがPyの現実だった。

 もう互換性はあきらめる。
 あきらめたら、じゃない。できないんだろ?
 CardWirthPyはWSN仕様のシナリオだけ読み込めるようにする。1.50でPyにも対応してくれる作者には「1.50→WSN変換ツール」を用意する。こうすれば、Pyに賛同してくれるユーザーだけで回るようになり、同意のない権利を侵害する心配もなくなる。
 これならバグフィックスに追い立てられることもなく、何の責任も負わなくてすむ。


  監督責任

 あきらかにこじれた原因は個人にある。K4nagatsukiさんはこの十年、まるで判断ができなかった。上記の二次効果音における対応は好例だろう。重要な件だけ、ミスの上塗りがよく響く。


この件、もっと早期なら単に合わせればよかったんですが私の判断ミスで問題がこじれてしまっています。今ではCWPyの使用者もかなり多いようなのでCWに合わせると逆におかしくなるシナリオがありそうです。

WSN形式とクラシック形式で挙動を変えるぐらいが落とし所でしょうか(CWPyでクラシックシナリオのテストをするケースもあるはずなのでこれでも解決ではないんですが)。



 違うだろ。
 互換性や将来のためにも「不具合がありました。仕様を一本化します。ご協力をお願いします」って今からでも周りに頭を下げるのがスジだろうが。
 Pyの利用者に客はいない。みんな協力者のはずだ。
 
 まわりにおっかぶせないで、Pyだけは責任をもって処理してください。ほかでもないCardWirthのために。


  (悪)夢の終わり

 昔、lynaさんの横暴に対して、Pyには


これに対してアクションを起こさざるを得なかったのは、すべてのユーザが巻き添えになるからです。エンジンとエディタが中心となるインフラである以上、そこに問題が起きるとどうしても現在と未来のすべてのCardWirthユーザが巻き添えになります。もちろん私も含めてですので、私は行動を起こしました。

CardWirthがユーザが創造力と労力をつぎ込む型のソフトであったことが不幸の大本です。そうでなければ問題は遥かに小さかったでしょう。



 こういう真っ当な行動が起こせる協力者がいた。
 彼らが物事のスジを通せなくなったと悟ったとき、協力者は離れ、この企画は終わった。

 10年は短くないよ。全然。
 悪い夢だった。
PR

コメント

ただいまコメントを受けつけておりません。