Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nexts属性の仕様変更 #170

Closed
snext1220 opened this issue Mar 4, 2020 · 17 comments
Closed

nexts属性の仕様変更 #170

snext1220 opened this issue Mar 4, 2020 · 17 comments
Labels
enhancement 新機能提案*

Comments

@snext1220
Copy link
Owner

snext1220 commented Mar 4, 2020

昨年リリースした機能ですが、より記述を簡単化し、より汎用性を持たせる目的です(現時点でnexts属性は利用されていないはずなので、互換性の制約が出る前に修正するならば修正してしまいたいと思っています)。

  • nexts属性をinit-basic要素のnexts属性に移動
    • 個々のendシーンにnexts属性を指定しなくても良い(endシーンが多くなると、同じnexts属性を指定するのが面倒なので)
    • 基本は1シナリオで遷移先は1つのはずなので
    • 異なるならば、scene-nexts属性を残すのもありか(init-basic<sceneの優先度)
  • 同じくinit-basic要素にnexts_opt属性を追加(nexts_opt="state,free1"など)
    • state、free1~3もコピーするかを指定する
    • これらの項目は一律引き継ぐには悩ましい。が、シナによっては引き継ぎたい用途がありそう。
@snext1220 snext1220 added the enhancement 新機能提案* label Mar 4, 2020
@snext1220 snext1220 added this to the April 2020 Update milestone Mar 4, 2020
@toki-sor1
Copy link
Collaborator

nexts属性をinit-basic要素のnexts属性に移動

こちらの方が設定する時も、設定を確認する時も楽になると思います。
ただ、init-basic要素に限定すると、シナリオ攻略順を限定しない連作シナリオの実装が難しくなりそうです。

そう考えると、現状のままか、init-basic<scene-nextsの両方が良いのかなと思いました。


同じくinit-basic要素にnexts_opt属性を追加(nexts_opt="state,free1"など)

ゲーム的には、全ての状態を引き継げた方が、プレイヤーキャラ続投という実感を強く感じるかなと思います。
しかし、stateの場合は、遊びやすさの面から考えると、引き継がれているのは逆に面倒な感じもしますし、ストーリーの自由度が損なわれてしまう可能性もありそうです。

free1~3の引き継ぎは、シナリオによっては引き継ぎたいものもあるかもしれませんね。
しかし、引き継ぐとなるとfree1~3の項目名も引き継ぐことになりそうですし、そうなると引き継ぎたくないシナリオで数値をリセットしても、自由に使えなくなってしまいそうですね。

各シナリオの作り易さ・自由度を優先すると、free1~3はコピーされなくても良いかなと思いました。

@snext1220
Copy link
Owner Author

snext1220 commented Mar 6, 2020

早速のご意見ありがとうございます!
と、スミマセン、もう少しだけご意見伺わせてくださいませm(_ _)m

ただ、init-basic要素に限定すると、シナリオ攻略順を限定しない連作シナリオの実装が難しくなりそうです。

init-basic要素でもnexts属性と同じく、「scena1,scena2,...」のような指定は可能なので(=次にscena1、scena2何れに移動してもOK)、攻略順の自由は維持されます~。その前提ですと、如何でしょうか??
#ただし、あるend1ではscena1へ、end2ではscena2へ移動したい、という用途は不可。

各シナリオの作り易さ・自由度を優先すると、free1~3はコピーされなくても良いかなと思いました。

こちらはどちらかというと、連作機能を個人のシナでも積極的に利用して戴きたい、という意図でした。
# 長いシナを一本、ではなく、どんどん別シナidで分けて戴いた方が遊びやすそう(「導き~」の中編スキップをシナ分離で明確に対応するイメージです)

その場合は、物語の結びつきも強くなると思われ、任意であればfree1~3、stateを引き継ぐオプションがあってもよい(というかむしろ必要になる)と思われたのですが、如何なものでしょうか。

@toki-sor1
Copy link
Collaborator

nit-basic要素でもnexts属性と同じく、~

ああっと、そうでしたか! 早とちり失礼しました…!
init-basic要素でも「scena1,scena2,...」のような指定が可能ということで、nexts属性をinit-basic要素のnexts属性に移動しても良さそうと思いました!

こちらはどちらかというと、連作機能を個人のシナでも積極的に利用して戴きたい、という意図でした。

なるほど、リオさんの今後のシナ制作予定に、この個人シナ連作についても触れられていましたね!
表現の幅も広がりますし、自作のシリーズものでキャラ引き継ぎは胸熱ですし、なにより遊びやすそうです!

その場合は、物語の結びつきも強くなると思われ、任意であればfree1~3、stateを引き継ぐオプションがあってもよい~

引き継ぐかどうかを任意で設定できるのであれば、free1~3、stateを引き継ぐオプションがあっても良いと思います!

@Salvadors-cabin
Copy link
Collaborator

リオさん提案の仕様変更には賛成です。

異なるならば、scene-nexts属性を残すのもありか(init-basic<sceneの優先度)

個人的にはend="happy"以外では引き継がなくてよいと思っているのでscene-nexts属性は残さなくてもよいと思っています。

state、free1~3もコピーするかを指定する
これらの項目は一律引き継ぐには悩ましい。が、シナによっては引き継ぎたい用途がありそう。

私は「引き継ぎたい派」です。

これとは別の提案ですが、データの移行をユーザ側により明示的にした方がよいのではないかと思いました。
連作の場合リリースの間が空くこともあり、ユーザがセーブデータが保存されていることを忘れてしまうのではないかと思うのです。
例えば、ENDシーンで(Backupを選択したときと同様の)ファイルセーブの画面を出すなどしてユーザにセーブしたことを意識させ、新シナリオでそのデータをロードしてもらった方が引き継がれたことが分かりやすいかな、と思いました。
また、ブラウザのデータをクリアしてしまうリスクを考えると別のファイルにバックアップしておいた方がよいように思えます。

@snext1220
Copy link
Owner Author

snext1220 commented Mar 8, 2020

皆さま、諸々のご意見ありがとうございます!
以下、懸案の部分に絞ってお返事してまいりますね。

個人的にはend="happy"以外では引き継がなくてよいと思っているのでscene-nexts属性は残さなくてもよいと思っています。

迂闊ではあったのですが、こちらご意見伺っていくうちに課題が出てきました(考えが浅くて申し訳ありません;)。既知のものも含めて、以下にまとめます。

  1. 複数のhappyがある場合に、引き継ぎ先を分岐する用途はないか(scene-nextsを廃止した場合には分岐は不可) ※特にこの点は将来的にありそう
  2. badエンドでの引き継ぎ先は不要か(現在はscene-nextsが指定されていればbadでも引継)
    • init-basicで統一した場合、badエンドは一律引き継がないか、badエンドで明示的に引き継がないというオプションが必要になります
  3. free1~3、state引継ぎの問題はinit-basicでなくても解決できる(後述)

上の問題は、scene-nexts属性を維持した場合にはクリアとなります。
happyエンドの個数が限られることを考慮すると(badエンドを含めても相応に限定される)、重複して指定してもそこまで手間ではないですし、scene-nexts属性だけの方が自由度も維持できて良いのか、と思ってきてしまいました...

# 賛同のお声も戴きながら、提案者が否定するような意見になってしまい、本当に申し訳ありません...;

引き継ぐかどうかを任意で設定できるのであれば、free1~3、stateを引き継ぐオプションがあっても良いと思います!
...
私は「引き継ぎたい派」です。

こちらは「引き継ぎはできた方が良い」が強そうですね。
で、引き継ぎの方法についてのご相談です。
当初はinit-basic要素での指定を検討していたのですが、以下のようにするのは如何でしょうか。

  • free1~3、stateは一律引き継ぐ
  • 不要なシナではscene 0でscene-free1~3、state属性で初期化(普通は0、-all)

この内容ですと、引き継ぎ時にfree1~3、stateを意識する必要はありますが、ほぼ現在の要素/属性で賄えますし、(初期設定が膨らみつつあるので)仕様のシンプルさを維持する、という意味もありそうです。

これとは別の提案ですが、データの移行をユーザ側により明示的にした方がよいのではないかと思いました。

こちら、私も気になっておりました。
そもそも[はじめから]を反射的に押してしまう人がいるのかな、と;
ただ、セーブデータのbackup/restoreをユーザーに明示的にさせるのも(判りやすさの反面)手間かなと思っていまして、少々悩んでいます^^;
#プレイヤーにbackupを促すとしても、必須としない方が良いかなというスタンスです~

現時点では代案なしなのですが、引き続き思案させてください。
そして、皆さまのご意見も是非に!(もちろん、ママでも十分、というご意見も歓迎です)

@Salvadors-cabin
Copy link
Collaborator

上の問題は、scene-nexts属性を維持した場合にはクリアとなります。

こちらはお任せしますー

free1~3、stateは一律引き継ぐ
不要なシナではscene 0でscene-free1~3、state属性で初期化(普通は0、-all)

特に問題無いと思います。賛成です。

ただ、セーブデータのbackup/restoreをユーザーに明示的にさせるのも(判りやすさの反面)手間かなと思っていまして、少々悩んでいます^^;

私は手動でbackup/restoreをさせてもいいと思っていますが、手間という事ならブラウザのクリア機能で消えない場所(デスクトップとか)に自動バックアップするがよいのではないかと思います。

@snext1220
Copy link
Owner Author

諸々ありがとうございます!こちらは反対もないようでしたので、Dでもお伝えしましたように、先行して対応してまいりますね。

> 手間という事ならブラウザのクリア機能で消えない場所(デスクトップとか)に自動バックアップするがよいのではないかと思います。

残念ながらWebアプリでは任意のファイルを作成/編集することはできず(ページを開いたとたんにPCのデータを書き換えられてしまうと大変なことになってしまうため)。

手動リストアが手間でないように、手動バックアップも手間ではないので、「データ引継ぎのシナではendシーンでバックアップの注意を表示させる」あたりが現実的な落としどころのかなと思いました。如何でしょうか。
# リストアではなくバックアップなのは、やりたくない人はしない、という余地は残したいためです。

なお、ご要望が強ければメッセージはシステム側で表示させることは可能ですが、邪魔という人もいそうなので、それこそシナリオ側にゆだねてもよさそうですね。

@Salvadors-cabin
Copy link
Collaborator

残念ながらWebアプリでは任意のファイルを作成/編集することはできず(ページを開いたとたんにPCのデータを書き換えられてしまうと大変なことになってしまうため)。

なるほどー。確かにそうですね。

手動リストアが手間でないように、手動バックアップも手間ではないので、「データ引継ぎのシナではendシーンでバックアップの注意を表示させる」あたりが現実的な落としどころのかなと思いました。如何でしょうか。

ちょっと分かっていなかったのですが、nexts属性を指定するとメニューからバックアップしたセーブファイルも別シナでリストアできるのですね?
そうであるならそれでいいと思います。

よろしくお願いしますー

@snext1220
Copy link
Owner Author

snext1220 commented Apr 12, 2020

nexts属性を指定するとメニューからバックアップしたセーブファイルも別シナでリストアできるのですね?

いえ、あくまでセーブデータはシナ単位なので、Utilページから次シナリオを指定してバックアップという形になります(よって、stext.xmlで次シナの情報も登録しておく必要あり)~ただ、わかりにくいようであれば、個別シナからUtilページへのリンクを張ることで補えるのかなと^^;
如何でしょうか??

なお、先ほど以下の仕様でGitHubのみ修正しています。ご確認戴けますと幸いです。

  • free1~3、stateは一律引き継ぐ
  • 不要なシナではscene 0でscene-free1~3、state属性で初期化(普通は0、-all)

@snext1220 snext1220 added the Testing テスト中(現在のテスト対象項目) label Apr 13, 2020
@Salvadors-cabin
Copy link
Collaborator

いえ、あくまでセーブデータはシナ単位なので、Utilページから次シナリオを指定してバックアップという形になります(よって、stext.xmlで次シナの情報も登録しておく必要あり)~ただ、わかりにくいようであれば、個別シナからUtilページへのリンクを張ることで補えるのかなと^^;

ご説明ありがとうございます。明示できるのであれば後はシナリオ側の工夫ですね。

修正の方も了解です。試してみたいと思いますー

@Salvadors-cabin
Copy link
Collaborator

Win10+Edge環境で確認しました。

free1~3、stateは一律引き継ぐ

問題無く引き継ぐことができました。

不要なシナではscene 0でscene-free1~3、state属性で初期化(普通は0、-all)

scene 0では初期化できませんでした。
書式:scene id="0" free1="@0" state="-all"
scene 0の次のシーンで指定した場合は初期化できるのですが・・・
(私は「引き継ぎたい派」なので初期化はできなくてもいいのですが)

@toki-sor1
Copy link
Collaborator

Win 8.1/Chrome 81.0.4044.129(64bit)にて動作確認。

free1~3、stateは一律引き継ぐ

こちらの環境でも問題なく引き継ぐことができました。

不要なシナではscene 0でscene-free1~3、state属性で初期化(普通は0、-all)

私もサルバさんと同じく、Scene0では初期化できず、次のScene1では初期化できました。

@snext1220
Copy link
Owner Author

こちら失礼いたしました;
確かに[続き]扱いなので、Scene 0の設定は無視されますね...そうした意味では、free1~3、stateだけでなく、他の属性も同様かと思います。

ただ、引き継ぎでのScene 0更新は、実は結構根っこの深い問題なので、できれば ドキュメントに「引き継ぎ時はScene 0の属性は無視される」旨を明記し、ママ にできればと思うのですが、如何なものでしょうか;

@snext1220 snext1220 removed the Testing テスト中(現在のテスト対象項目) label May 4, 2020
@Salvadors-cabin
Copy link
Collaborator

私は「引き継ぎたい派」なので初期化はできなくてもいいです。
また、引き継ぎ時にパラメータを初期化したい場合は次シナのScene0ではなく前シナの最後で初期化して引き継げば同じ結果になるのではないかと思います。

@snext1220
Copy link
Owner Author

ありがとうございます!
引き継ぎパラメーターだけでなく、scene 0での属性指定が無視される制限なので、少々気になった次第ですが、そもそもscene 0で属性を指定するケースはさほど多くないのかもしれませんね^^;

次シナのScene0ではなく前シナの最後で初期化して引き継げば同じ結果になるのではないかと思います。

こちらは

  • マルチエンディングの場合に、指定個所が重複・分散する
  • 共作の場合に、引き継ぐかどうかは次シナの判断

という意味で、次シナとしておりましたが、結局はきめの問題かもですね~本格的な共作は幕末が最初になりそうですが、またご相談させてください>皆さま

@toki-sor1
Copy link
Collaborator

次シナのScene0ではなく前シナの最後で初期化して引き継げば同じ結果になるのではないかと思います。

  • マルチエンディングの場合に、指定個所が重複・分散する

マルチエンディングで指定箇所が重複・分散するのは、作者側が気を付ければ大丈夫かなと思います。

  • 共作の場合に、引き継ぐかどうかは次シナの判断

共作の場合の引き継ぎについては、作者同士による事前の打ち合わせが必要になりますね。
それでも、次シナリオのScene 1で初期化するよりも、前シナリオの最後で初期化した方が、次シナリオで自然に見えます。

上記の理由から、私は (問題がなければ)シナリオの最後で初期化するのが良いかなと思いました。

難しいようでしたらドキュメントに「引き継ぎ時はScene 0の属性は無視される」旨を明記し、そのままとするという方針で大丈夫です。

@snext1220
Copy link
Owner Author

snext1220 commented Jun 7, 2020

上記の理由から、私は (問題がなければ)シナリオの最後で初期化するのが良いかなと思いました。

はい、こちらは共作時の決めの問題なので、企画単位に決められればと。
個人的には、同じ情報が複数に散乱するのは避けたい派なので、次シナでの初期化推しですが^^;、こちらは幕末の時にでもまたご相談させてください。

いずれにせよ、現在のシナか次のシナで初期化するかは、システムの問題ではないので、一旦はママでまいりますね。ドキュメントへの明記は別途対応してまいります~

# Pg、マニュアルは #191 にて管理してまいります。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement 新機能提案*
Projects
None yet
Development

No branches or pull requests

3 participants