NPCのカード使用時に静止を入れる

Issue #537 new
jinto_ created an issue

これも仕様合わせです。
1.20、1.28、1.50をコマ送りで確認してみると、どれもNPCがカードを使い拡大終わりの時に一定時間の静止があります。
1.20、1.28、1.50→拡大・静止・縮小。
py→拡大・縮小。
結果としてpyの場合、NPCのカード使用が速い印象を受けます。
自分は1.20、1.28、1.50の形の方が好きで合わせてほしいのですが、これは意見が割れるかもしれません。

Comments (21)

  1. k4nagatsuki repo owner

    同行キャストの行動は分かりにくいので、認識率をよくするために空白時間が入っているのでしょう。

    これはオプション「カードの使用前に空白時間を入れる」のオン・オフが反映されるようにすればよいかもしれません。元々このオプションは空白時間周りの挙動をCWに近づけるためのものです。

    意見がある方は仰っていただけるとありがたいです。

  2. jinto_ reporter

    発想としては同じでいいと思うのですが、そうすると今度は召喚獣の挙動だけ速くなってそこが悪目立ちしそうです。
    1.50と比べて明白なぐらい速いのですが、これはどうにもならないことでしたでしょうか。

  3. jinto_ reporter

    拡大・縮小速度は、カードの回転速度と同じ設定に依存しています。そして拡大・縮小にかかる時間は、回転速度と同じ(これまで)か、その2倍(今回の対応後)になっています。 これを微調整しようとすると、回転速度*2という計算式に、また小数点つきの値をかけなければなりません。その結果は、上記したようなフレーム飛びの問題の再来になります。+1では6フレームだったのが+2でいきなり4フレームになる、という事にならざるを得ないという事です。そうなると設定変更による速度調節になめらかさが欠けてしまうので、あまり好ましい事ではないです。

    これを見てて思ったのですが、拡大後の静止の時間を増やして速さを緩和することも無理なのでしょうか。
    NPCの方と一緒にそうできれば、かなり他のエンジンの感覚に近づくと思えるのですがどんなものでしょう。
    [認識率をよくするために空白時間が入っている]とは上手い言い方で、pyで戦闘をしていると毎回速いなと感じ、カードの認識が半端な状態で次に行ってしまうという印象を受けます。
    それがXEditorのアイコンと同じくらい慣れません。

    [拡大後の静止の時間を増やして速さを緩和する]ことが無理、或いは上手いやり方でないならどうしましょうね。
    今のNPCの速度は今の召喚獣の速度に合ってる気がするので変えない方がいいかもしれません。

  4. k4nagatsuki repo owner

    すみません、ちょっとよく分からないのですが……

    発想としては同じでいいと思うのですが、そうすると今度は召喚獣の挙動だけ速くなってそこが悪目立ちしそうです。

    召喚獣の発動前に入る空白時間も「カードの使用前に空白時間を入れる」を参照しています。私には問題があるとは思えないのですが、このオプションを使う方法のどこに問題があるのでしょう?

  5. jinto_ reporter

    召喚獣の発動前に入る空白時間も「カードの使用前に空白時間を入れる」を参照しています。

    ほんとですね。すみません。若干静止が入ってました。
    1.50と比べてかなり速いなという見方しかしてなかったので気づきませんでした。
    振出しに戻りますが、自分の二つ目、三つ目のコメはなしということでお願いします。

  6. jinto_ reporter

    召喚獣とNPCはこれでいいのではないかと思います。
    別に気になったのはPC・エネミーの空白時間の方は長くないかということです。
    カクカクしてるというか動きがぎこちなくなる印象を受けます。
    これは1.50に合わせた結果なのでしょうか。
    1.50の方が滑らかに動いてるように見えます。(PC・エネミーはどちらかというと空白時間なしの方が1.50に近い気がします)

  7. jinto_ reporter

    単純に召喚獣がとてもゆっくりなのでPCの行動が速く見えてるだけかもしれません。
    問題と感じたら別のissueを立てるので、このissueは他の人の意見がなければ解決とします。

  8. k4nagatsuki repo owner

    どちらも時間は同じ(カード速度*2+1フレーム)ですね。

    色々な設定で試してみてください。

  9. jinto_ reporter

    すみません。
    何度も見比べてみるとNPC・召喚獣共にpyの方が空白時間が少ないようです。
    後、pyの場合NPCのカード使用後は回転だけだけど、他エンジンはそこに縮小も入ってます。
    ずっと比べてて思ったのですが、CWというのはPC・エネミーより召喚獣・NPCの挙動が遅く感じられるようにつくられてるのではと思います。(pyは=になっている印象)
    それはnagatsuki さんの仰った認識率をよくするためでしょう。

    そして拡大・縮小にかかる時間は、回転速度と同じ(これまで)か、その2倍(今回の対応後)になっています。

    1.50の召喚獣の挙動を見るに、これはもしかして×3が正解だったのではないでしょうか。 1.50のあのゆったりとした召喚獣の挙動を見てるとそう思えるのですが、おかしなことを言ってるでしょうか。

    問題を三つ出してしまいましたが、issueを立てるにしてもその前にご意見を聞いてみたいです。
    pyにあるカードの使用前に空白時間を入れる・召喚獣カードの拡大率を大きくするは他エンジンの挙動に近づけるためにつくられたオプションと思いますが、現状ではまだまだ道半ばだと思います。

  10. k4nagatsuki repo owner

    すみません、実装を見直したら*3になっていたので、カード速度の3倍フレーム分の空白時間が入っていたようです。前バージョンまでは*2なので、たぶん急に遅くなったという意見が出ると思います。時間は元に戻してNPCの行動前の空白時間だけ入れるようにします。

    また、どうにも手許がややこしい事になりそうなので、とりあえずpull request #1944をマージしておきます。


    この際ですから、これらの時間や速度に関してどこまでCWの仕様に添うべきかという事に関しての私の態度を書いておきます。

    1. CWはFPSの概念を持っておらず、その描画速度は環境によって様々です。私はプレイヤーカードの上下移動に限り極端に遅い環境でCW 1.28を遊んだ事がありますし、この環境は大きなカードの回転速度が遅い/速いと感じた事は何度もあります。
    2. また、CWのカード速度の設定には不自然な所があり、+0~+2では速度が違うのに+1は踊り場のようになっていて+0からの変化が感じ取れない、というような所があります。

    この1.と2.に完全に合わせる事は不可能です。「私の環境と一致しているべき」と思う人がいる事は分かりますが、そのように思う異なる環境の2人がいるだけで対応はできなくなってしまいます。今ではそこに、前バージョンまでのCWPyのユーザだった、という人まで加わります。

    「私の環境・感覚に合わせてほしい」という要望に際限無く答えようとする事は、底の無い泥沼に足を踏み入れる事だと私は思っています。道半ばなのはその通りですが、その道は様々に枝分かれしたり合流したりした挙句、どこにもたどり着かないようにできているのです。

    そのような要望を出す場合は、それが全く個人的な要望になっていないか再検討していただけるとありがたいです。文章を書いていて「~と感じる」という文言が出てきたら、警戒してください。

    全く個人的な要望であればIssueを立てるべきではない、とは言っていない事に注意してください。同じ要望を持つ人間はいないかもしれませんし、100人いるかもしれません。対応を求めるのではなく、賛成・反対意見を募る手段としてIssueを立てるのは悪くない事です。

    似たような答えの無い問題は、インタフェースなど様々な面にあります。ある程度規模があり、ある程度ユーザがいるソフトウェアは妥協の塊にならざるを得ません。その事も頭においていただければと思います。

  11. jinto_ reporter

    こうなると自分にはもう手に負えませんね。
    手持ちにある環境の中でどう違うかを見てるだけで、他の人の環境でどう見えるかは分からないので。
    今のpyは自分には合わず、何故だろうと考えながら他エンジンと比べて、その理由を探る結果として出てきたのが上の意見です。
    他のユーザーの方々がどう思い、感じてるのかはわかりません。
    個人的な好みの範疇を出ない意見なのだとしたら、喜んで取り下げます。
    その場合、自分はpyからは離れますが、他のユーザーの方々にとって不満がないならそれで満足です。
    初めて触れた時から自分はpyに大きな違和感があり、それが他の移行してくるユーザーにも同じような思いを与えるのではという懸念から幾つか意見を述べてきました。
    ただもしこれが自分一人の特殊な感覚に過ぎないのなら、ほとんど価値のないものだと思います。

  12. 暗黒 騎士

    同行NPCがカード交換するとフリーズします。 ここ で止まってるようです。

    Traceback (most recent call last):
      File "cw\thread.pyo", line 732, in run
      File "cw\thread.pyo", line 762, in _run
      File "cw\thread.pyo", line 771, in main_loop
      File "cw\eventhandler.pyo", line 96, in run
      File "cw\eventhandler.pyo", line 281, in lclick_event
      File "cw\sprite\statusbar.pyo", line 1076, in lclick_event
      File "cw\battle.pyo", line 88, in start
      File "cw\battle.pyo", line 161, in run
      File "cw\character.pyo", line 998, in action
      File "cw\character.pyo", line 927, in use_card
      File "cw\animation.pyo", line 39, in animate_sprite
      File "cw\sprite\card.pyo", line 117, in update
      File "cw\sprite\card.pyo", line 386, in update_zoomout
      File "cw\sprite\card.pyo", line 404, in _update_zoominout
    IndexError: list index out of range
    
  13. k4nagatsuki repo owner

    pull request #1945

    自分自身が効果対象に入っているとエラーになってしまいますね。修正しました。

  14. Liar_cw NA

    毎回すみません。こちらの方も以前の挙動に戻してもらいたく思います。

    1. アニメーション速度に対して縮小が少々激しいのではと感じました。召喚獣カードの時と同じです。

    2. 1.の変更(縮小)によるものか以前と比べてテンポが少し悪くなっています。遅いです。私のシナリオのようにNPC枠6人分すべて使う方は稀でしょうが、これでは空白時間を外してもNPCを使う事を躊躇してしまいます。認識率とは別に速度も必要だと思います。

  15. k4nagatsuki repo owner

    同行キャストの縮小動作が無かったのはバグというべきで、実際には以前から同行キャスト自信が効果対象になっている場合に限り縮小が行われていました。両方を縮小無しかありで揃えるのが妥当です。

    例によって「行動前に空白時間を入れる」オプションのオン・オフをこれにも反映させるという手が使えそうです。

    テンポが悪いという事であれば、詳細設定にある戦闘時のカード速度の調節も考えてみてください。

  16. k4nagatsuki repo owner

    以下はこの件に限らない一般論です。

    自分の好みにソフトを合わせるという要求を通す事は、他の多くのユーザを犠牲にしかねない事に自覚的になってほしいと思います。

    その要求は、世の中の一部分が自分に合わないから世の中の方が自分に合わせるべき、という要求と、規模の大小はあれ同じです。世界の方を自分に合わせるのは不可能ではありませんが、そこに他人がいる以上、かなり大きなハードルを乗り越える必要があります。

    遥かに簡単で穏当なのは、自分の方が変わる事です。これをソフトの挙動に関して言い直すと、ソフトを変えるより自分が慣れる方が穏当である、という事になります。

    慣れる事がどうしても難しいというのであれば致し方ありませんが、ソフトを変える方向にも大きな困難が待ち構えている事を認識していただきたいです。

    • 自分の好みは他のユーザの好みと一致しないかもしれません。その場合、自分に合わせると他の人に犠牲を強いる事になります。そうした人々を説得するのはとてつもなく難しい事です。
    • その場にいる人を説得して要求を通したとしても、あとで別の人の要求でひっくり返されるかもしれません。自分に要求を出す権利があるのであれば、他の人にもその権利があるのです。
    • その手の要求が頻繁になされ、通るべきという事を前提にするなら、いつ何時他人の要求によって思いもよらぬ自分好みでない変化が生じるかもしれない、という状態をユーザ全員が甘受しなければなりません。

    これらの困難を乗り越えるためには、世間を変える時と同様、手順を踏む必要があります。

    1. その変更が自分だけでなく他の人、ソフトのユーザ全体にとって利益になるという事を説得力のある根拠をもって示す事。
    2. 要求を出す前に、その変更への賛成意見を求める事。
      • 世の中の人の9割が変化を望んでいる要素が世間にあるなら、それは世間の方が変わるべきなのです。その証拠として意見を集めるべきです。私が「対応を求めるのではなく、賛成・反対意見を募る手段としてIssueを立てるのは悪くない」と書いたのはそういう事です。
      • 実体のある意見を募ってください。想像上のユーザの意見は集めないでください。ある人が想像した集団の意見と実際に集まった意見がいつも一致するとは限りません。むしろ、経験上は一致しない方が多いです。
    3. 意見が通ったとしても、あとで同様の手順を踏んでひっくり返される事を覚悟しておく事。延々と現れるかもしれない反対者への対応を行う事。今まさに@jinto_さんの要求に対する反対意見として@Liar_cwさんの意見が出ている状態ですが、こうした事はいくらでも繰り返されます。

    このような手順を踏まずにあまりに次々と要求を出されてしまうと、開発者としては、そうした要求には原則として対応できかねる、という態度を取るしかなくなってしまいます。

    もちろんそうした態度はろくでもないものですが、「好み」という問題には正解が無いという性質上、対応にかかる手間に際限が無くなってしまうので、現実的にそうした態度しか取れなくなってしまうのです。現状は、すでにそうなりつつあります。


    もう一つの面白い選択肢として、自分が変わる事とソフトを変える事の間を取る「自分で自分のためにソフトを変える」というものがあります。CWPyはオープンソースですから、自分好みの派生版を作る事ができます。MercurialのようなVCSを使って、本流の変更を取り込む事も簡単にできます。

    もちろんある程度勉強が必要で、当初は手間もかかりますが、おそらくそれは自分の好みに合わせて次々と要求を出すよりも、長い目で見れば遥かに手間いらずで、他人に迷惑もかけません。

    実際にそうしている例もすでにあります。

  17. Liar_cw NA

    同行キャストの縮小動作が無かったのはバグというべきで、実際には以前から同行キャスト自信が効果対象になっている場合に限り縮小が行われていました。両方を縮小無しかありで揃えるのが妥当です。

    元に戻してほしい、とだけいうのは少々短絡的でした。 意見・要望を変えさせていただきます。 バグだったとしても、仰るとおりNPCの全ての縮小動作に対して「NPCの縮小動作等を行わない」オプションの追加を欲しく思います。 召喚獣カードはよくて、同行NPCはなぜいけないのでしょうか。

    カード描画速度・戦闘行動描画速度はともに+2であり空白時間のチェックは外してありますが、 個人的に丁度良いと思った設定を崩された形となりました。 今回は体調を崩す前にすぐさま使用を止めたので、あまり強く主張できないところもあります。

    またこれは先ほどの私の発言内容1.2.(他ユーザへの利益)に加えて、 急な変化への拒絶反応が出てしまっている事(無茶振りである事)や 自分側が変わる事が出来ないこと(わがままである事)を理解したうえでの要望でもあります。


    以下とても失礼な事を発言してしまうかもしれませんが、 Issueを跨いでまで私がここまで食らいついているのは、 それがユーザの領分(環境設定)に踏み込んだ事柄だからです。

    例えばオプション増加を抑えるため等で犠牲を出す必要はあるのでしょうか?  後出しの意見となってしまいますがオプションによる住み分けは可能なはずです。 どうしても見た目上の項目を増やしたくない場合は、隠しオプションという手もあるはずです。

    「好み」の問題である以上は、どんな理由を付けてもどちらかを除外する事はできないものと思います。 イタチゴッコというのなら両方に対応して問題そのものを叩き潰すのもひとつの正解ではありませんか?  実際にそうした解決の仕方もあったはずです。

    私自身、ある問題の本質が「好み」であるとばっさりと切り捨てた事もありますし、 最近の私は何かと否定的な態度ばかり取っていますし、 開発者でも何でもないたかが1ユーザに過ぎない私が偉いとは思いませんが、 ユーザの領分に踏み込まれる以上は そう言わざるを得ません。


    派生版という考えは私にはないですね……。 例えそれが自分専用であったとしても、それに手を出した時点でただの1ユーザではなくなってしまうからです。 仰るとおり個々に微調整ができるという意味でのオープンソースとも取れるとは思いますが、それは何か違う気がします。


    長々と失礼しました。

  18. k4nagatsuki repo owner

    例えばオプション増加を抑えるため等で犠牲を出す必要はあるのでしょうか?  後出しの意見となってしまいますがオプションによる住み分けは可能なはずです。 どうしても見た目上の項目を増やしたくない場合は、隠しオプションという手もあるはずです。

    ここから先は開発者だけ考えていればよさそうな問題になってしまいますが、説明します。

    オプションを追加する事の問題は3点考えられます。

    1. 外観が複雑になること
    2. 実装が複雑になること
    3. 仕様が硬直すること

    1.については隠しオプションで問題はないです。2.は、程度問題ですが、歯止めをかける必要があるという程度です。私が開発者としてもっとも恐れているのは3.です。

    ソフトが長いこと開発されるものであったり、別の実装が現れたりするようなものであれば、その仕様には柔軟な部分が必要です。例えばスマホ版CWを作るとしたら、各種ダイアログを別画面で表示する事はできませんが、「カード選択はダイアログ画面で行う」という事が仕様で決まっていると、仕様通りに実装したスマホ版を諦めるしかなくなります。将来の変化や、複数の実装を想定した仕様には「実装依存である」という部分が普通は存在する、という事です。

    これを一般化して考えると、細かいところまで仕様で決めてしまうと、開発の手足が縛られる事になり、ソフトの将来が危険に晒されるという事になります。例として、一時期隆盛を極めたIE5依存のWebシステムはあちこちで巨大な負債となっており、システムそのものを捨てるしかない状態になっているものがほとんどという有様ですが、そういう事がCWに起こらないとは限りません。

    仰るような隠しオプションを追加する事は簡単ですが、以上の事情から、その隠しオプションが「CWではこういう設定ができる、これは確定された仕様である」とするわけにはいきません。「現時点のCWPyでは仕様であるが将来や別エンジンではどうなるか分からない」とするしかありません。

    これが「将来も別エンジンもこの仕様を実装しなければならない」としてしまうと、それは新しい実装の障害になります。たとえばCWのカード速度に完璧に合わせる事を求められてしまうと、CWPyの実装はほとんど不可能になってしまいます。

    新しいオプションで払われる犠牲はCWの生死の可能性です。それは将来に渡って特に問題無いかもしれませんし(今回の件は挙動も実装難度も些細に見えるのでその可能性がかなり大きいと思いますが)、実は生存確率をかなり下げてしまうものかもしれません。

    全てのユーザがここまで理解して要望するべきだとは思いませんが、開発側はこれくらいまでは考えておくべきです。こうした考えの上で、私はオプションの追加に積極的ではありません。今存在する各種の細かい挙動のオプションも、将来や他のエンジンにも実装されるべきものだとは考えていません。

    以上の事を理解した上で、隠しオプションでも追加してほしいというのであれば、それは別によいのですが、将来もそれが機能し続ける事を保証する事はできません。

  19. k4nagatsuki repo owner

    pull request #2123

    試験実装がshelveされたまま放置状態になっていたので、とりあえずマージしておきました。このオプションはあとから変更するかもしれません。

  20. Log in to comment