追加案: シナリオ側からのCardWirthPyバージョン識別の方法を設ける
Issue 189の報告より。
1.28の状態分岐や時限クーポン、1.29の@MP3、1.50の状態分岐などによるバージョン識別の方法を設けることを検討する。
ただ、今現在それを用意していないのには下のほうな理由があるので、よく検討する必要がある。
方法は用意していないです、というのは、CardWirthとCardWirthPyで露骨に挙動が異なるところがあれば、それはCWPyの方を修正しなければならないのであって、シナリオの側で対応するとより状況がこんがらがってしまうからです。
ただ、上に書いた手札選択のような事もありますし、シナリオの作者がCWPyのリリース版でテストプレイした時に挙動の違いを発見し、しかしCWPy側に報告はしない(という気持ちはすごくよく分かる)というような場合も考えると、たしかに識別できてしかるべきかもしれません。検討します。
Comments (14)
-
reporter -
reporter 今再確認したのですが、これはどうやら同行NPCには対象消去が効かないという問題のようです。そうであれば対応は容易です。
これから作業します。
-
reporter pull request #740
-
reporter @CardWirthPy version.0.12.2
のようなクーポンが常に存在するようにすればいいのですが(ゴシップは@クーポン
のような仕組みが無いので問題がある)、クーポンの内容については考える余地があります。ご意見のある方は仰ってください。
-
reporter 例えば「0.12.2以降」と「0.12.2」を見分けるような方法があった方がいいかもしれません。「以降」の時は常に存在する
@CardWirthPy version.0.12.2
に加えて「そのバージョンだけ」存在する@CardWirthPy version.0.12.2 Only
のような識別クーポンを設ければいいでしょうか。また、シナリオ側の判断をプレイヤーが避けたい場合に備えて、識別クーポンの類はプレイヤーがカスタマイズできるようにした方がいいかもしれません。
@MP3
も含めてData/SystemCoupon.xml
のようなファイルに記述するというような手が考えられます。 -
reporter 明日にも0.12.2をリリースしようと考えているのでぎりぎりこの上ないタイミングなのですが、正直に言ってこれを今すぐ実装するか悩んでいます。思えば0.12.1のリリースから10ヶ月近くかかって0.12.2を出そうとしているわけで、0.12.2の期間もかなりの長期になることが予想されます。その間に1.50との間に種々の挙動の違いが発見されることも予想できます。そうなると、「しばらく使われるバージョンがある」のに「簡単な識別方法はない」といういかにも不親切な状況が発生し得ます。
実装自体は、データを外部ファイルに持つことなどを考えなければ簡単です。称号選択分岐で称号名を観て特別な処理を追加するだけです。バグが発生する恐れもほとんどないでしょう。後はすべきかせざるべきかという考え方だけの問題です。
とりあえず、まだ1日あるので、もうしばらく考えてみます。
-
長期的な話ですし、中々どう実装すればいいか難しいですし、k4nagatsukiさんの案以上のものは僕には思い浮かびません。ただ今後のことを考えると、とりあえずバージョン識別の方法を実装するのはそう悪くないとは思います。k4nagatsukiさんのご判断にお任せします。
-
reporter ありがとうございます。実装する方向で明日(今日?)まで考えます。
実施は夕方頃になるはずですので、それまでになにかよい案を思いついたら書き込んでください。
-
reporter 夕方にはちょっと早いのですが他の修正(またもフォントがらみ)との兼ね合いもあるのでこれからpushします。ありがとうございました。
リリースまでに(もうあまり間が無いですが)何かあったら巻き戻します。
-
reporter pull request
#753まだ外部化云々の問題が残っているので、このIssueは優先度を下げて残します。
-
reporter - marked as minor
-
reporter -
assigned issue to
外部化に着手。
-
assigned issue to
-
reporter pull request
#778 -
reporter - changed status to resolved
- Log in to comment
ゆう氏のバージョン識別サンプルシナリオの記述より。
これはCWPyの互換性状況を考えると1.50のように動いてしかるべきだと思うのですが、存在しないキャラクターの選択によって思いもよらないバグが発生するかもしれず、対応は極端に難度が高いです。
急いで対応するのは無理があるので0.12.2では見送ります。