アクターを変数の代わりに活用する手法

kote
記事: 10
登録日時: 2021年6月16日(水) 12:57

アクターを変数の代わりに活用する手法

投稿記事by kote » 2021年6月16日(水) 16:27

最近RPGツクールを始めたものです。
乱文長文失礼します。
ステータス専用のアクターを作りそこから通常アクターのステイタス画面を作るという手法です。
一応自力で考えたつもりですが既存の手法だった場合は解説しているサイトを教えてください。

現在ユーザーオリジナルキャラを最大50体(最初100体だった)作れる主人公非固定、のエロ系RPGを作っており、キャラごとにサブレベル、追加ステータス、エロイベント実行回数などの記録を追加したいと思ったのですがいろいろ問題がありました。
問題点
サブレベル:サブ職業を設定できるプラグインを使おうと思ったのですが海外の有料だったので買い方がわからないのと触ってないだけですが表示方法がわからない。
追加ステータス:こちらも触ってないだけですが、設定の勉強や他プラグインとの競合、他プラグインウィンドウへの表示方法など少し面倒。
実行回数などの記録:一つの変数につき50個変数を作る必要がになり膨大な量になる。

そこでパスワードイベントに専用アクターを作ってイベントを作ることを知り、応用でステータス専用アクターを作り、
そのアクターのレベルと経験値をサブレベルに使おうと思いつきました。
攻撃力など一部ステータスそのままレベルアップで上昇し、その値をアクターを加算*したり別のステータスとして変数に保存して使い、余ったステータスを記録用の変数の代わりに使おうと思いました。
メリット
デフォルトの機能を使ってるので競合とかがない
変数でデータを呼び出すのでプラグインで作ったウインドウとかでも表示がしやすい
変数の数がだいぶ削減できる

質問
1. *通常ステータス(A)と追加のステータス(B)を合算したいのですが、一度足したら足されっぱなしでステータスが変わったときにさらにたされてしまうので常時(A)+(B)にしたいのですが可能ですか?(1回目(A)100+(B)50=(A+B)150、2回目(A+B)150+(B)60=(A+B+B)210なってしまう、本当は2回目もA)100+(B)60=(A+B)160にしたい。)
2. バトル系のイベントをまだ触ってないのですがデフォルトのステータスの代わりに変数を使うデメリットはありますか?
3. この手法にデメリット(変数より圧倒的に重くなりやすいなど)やもっとスマートにやる方法などありますか?
最後に編集したユーザー kote on 2021年6月16日(水) 17:08 [ 編集 2 回目 ]

kote
記事: 10
登録日時: 2021年6月16日(水) 12:57

Re: アクターを変数の代わりに活用する手法

投稿記事by kote » 2021年6月16日(水) 16:55

一応構造を載せておきます
(パーティーメンバー1人の場合)
通常アクター1~50
サブレベルアクター[サブレベル1]51~100
サブレベルアクター[サブレベル2]101~150

経験値獲得
#0001 = $gameParty.members()[0].actorId() + 50
#0002 = $gameParty.members()[0].actorId() + 100
経験値の増減:#0001 ,+ 1000
経験値の増減:#0002 ,

データの取得
//レベル
#0003 = $gameActors.actor($gameParty.members()[0].actorId() + 50).level
#0004 = $gameActors.actor($gameParty.members()[0].actorId() + 100).level
//レベルアップまでの経験値
#0005 = $gameActors._data[$gameParty.members()[0].actorId() + 50].nextRequiredExp()
#0006 = $gameActors._data[$gameParty.members()[0].actorId() + 100].nextRequiredExp()
など
最後に編集したユーザー kote on 2021年6月17日(木) 09:59 [ 編集 1 回目 ]
アバター
WTR
記事: 558
登録日時: 2015年12月22日(火) 19:14

Re: アクターを変数の代わりに活用する手法

投稿記事by WTR » 2021年6月16日(水) 17:31

申し訳ないですけど…全然わからないです

いきなり考えた方法を突き詰めていくより
まずはストレートな解決手段を探るほうがよくないですか?
買い方がわからない海外のプラグインというのも、本当にそれが最適解かどうかわかりません。
もっと理想に近いプラグインがあるかもしれない。
あるかもしれないですが
それを提案するには要件が明確でないとできません。

アクターのトリッキーな使い方とかは一旦忘れて
まず何したいの?を整理してからその実現手段の提案を募っては如何かと…
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
kote
記事: 10
登録日時: 2021年6月16日(水) 12:57

Re: アクターを変数の代わりに活用する手法

投稿記事by kote » 2021年6月16日(水) 20:19

WTR さんが書きました:申し訳ないですけど…全然わからないです

いきなり考えた方法を突き詰めていくより
まずはストレートな解決手段を探るほうがよくないですか?
買い方がわからない海外のプラグインというのも、本当にそれが最適解かどうかわかりません。
もっと理想に近いプラグインがあるかもしれない。
あるかもしれないですが
それを提案するには要件が明確でないとできません。

アクターのトリッキーな使い方とかは一旦忘れて
まず何したいの?を整理してからその実現手段の提案を募っては如何かと…


文章力が低くてすみません
やりたいことは大きく分けて4つ
1サブのレベルを追加したい
2サブレベルで上がったステータス分ステータスを上げる
3あたらしいステータスを追加する
4変数の数を減らしたい(おまけ)

1,2はYEP X Subclass (http://www.yanfly.moe/wiki/Subclass_(YEP))というプラグインでできるかもしれません
  サブ職業などと検索しました。
3,はフトコロ様のFTKR_AddOriginalParameters(https://tm.lucky-duet.com/viewtopic.php?t=3354)
  追加パラメータなど検索しました。
4,はプラグインで解消する方法はわからなかった

プラグインを辞めた理由
1,2海外のサイトで買い方がわからない&有料ほかのプラグインはみつからなかった
3,メニュー画面に表示するのは別プラグインを使っていて現在tomoaky様の一人旅メニュープラグインを使っていて対応させるのが大変そう(あまりさわってない)

デフォルトの機能で実行しようと思った理由
プラグインをいじる実力はないが、データを変数に代入するスクリプトくらいは検索してわかる.
データを変数に入れることができれば、一人旅メニュープラグインを使えばある程度表示できる。
プラグインを使ってるとどこにデータがあって、どういう扱いかわかりずらい&忘れる

アクターを活用しようと思った理由
経験値でレベルアップさせられる
普通に職業つくるのと同じように追加ステータスの能力値曲線を実行できる
途中でステータス用アクターの職業かえればステータスの変化具合も変えられる
足そうと思えばいくらでもクラスを追加できる
余った使わないステータスを変数の代わりに使えば数字を格納すれば、変数の数が減る(最大8個)

現在の問題
サブレベルで上がったステータス分ステータスを上げる部分
  現在ステイタス増加が更新されるたびにたされてしまう

個人的にはプラグインを複数いれて整合性をととのえるよりも、既存の機能を活用して実現すするほうがストレートだと考えました。
添付ファイル
無題18.png
sally
記事: 119
登録日時: 2019年8月06日(火) 05:11

Re: アクターを変数の代わりに活用する手法

投稿記事by sally » 2021年6月16日(水) 22:16

横から失礼します。

アクターやクラスのパラメータを変数として使う、
サブクラス的に使ってパーティ外成長させる、どちらもやったことはありますが、サイトは無いです。
ご質問頂ければお答えできる部分はあるかと思います。

取り急ぎ、冒頭の最後にされたご質問だけにお答えします。

1. *通常ステータス(A)と追加のステータス(B)を合算したいのですが、一度足したら足されっぱなしでステータスが変わったときにさらにたされてしまうので常時(A)+(B)にしたいのですが可能ですか?(1回目(A)100+(B)50=(A+B)150、2回目(A+B)150+(B)60=(A+B+B)210なってしまう、本当は2回目もA)100+(B)60=(A+B)160にしたい。)

可能です。
A+Bの結果を反映させるためのCを作成すれば解決します。


2. バトル系のイベントをまだ触ってないのですがデフォルトのステータスの代わりに変数を使うデメリットはありますか?

どのようなイベントを組むかによりますが、変数にどのタイミミングでどのステータスを入れるのかを別途考えるのがデメリットでしょうか。
それ以外は状況による、としか。

3. この手法にデメリット(変数より圧倒的に重くなりやすいなど)やもっとスマートにやる方法などありますか?

デメリットはとりあえずは
パーティ外アクター全体への回復やステート付与、経験値増加が使えないこと
でしょうか。

また、フトコロさんの追加パラメータは詳しくないのですが、
アクターAとBの追加パラメータを変数を用いず合算するのはこの方法もサブクラス導入でも同じ問題が発生するかと思いますので、
属性を利用して追加パラメータとして扱う方法もあります。整数として扱うなら100倍する必要がありますが。
kote
記事: 10
登録日時: 2021年6月16日(水) 12:57

Re: アクターを変数の代わりに活用する手法

投稿記事by kote » 2021年6月17日(木) 00:33

ご返信ありがとうございます

変数Cは考えたのですがスキルの計算式を敵や一時的に戦闘に参加するアクターなどの対応させる方法が思いつかず別の方法を考えてました。
打っている途中に思いついたのですが、メニュー画面ではCを作り、戦闘時は今のところ使わなさなさそうな運のパラメーターにBを代入して計算させてみようかと思います。(それかバトル前にパラメータに変数を加算して終了後に変数分減算するとか?)
2のデメリットを考えると他にも計算式に追加パラメータを使いたいならフトコロ様のFTKR_AddOriginalParametersを使った方がよさそうですね。

3のパーティ外アクター全体への回復やステート付与、経験値増加が使えないことは今回はパーティ人数は1人の予定なので問題なさそうでしたが、盲点でした教えていただきありがとうございます。
sally
記事: 119
登録日時: 2019年8月06日(火) 05:11

Re: アクターを変数の代わりに活用する手法

投稿記事by sally » 2021年6月17日(木) 03:04

すみません、仰っている内容が理解できていません。

メニュー画面への表示方法、変数への代入方法、戦闘計算式でのアクターステータス参照方法などが混ざっているようですが、それぞれは別問題ですので、切り分けてお話頂けると理解が進みます。

いま理解できていないのは、変数AとBについてです。
変数ABは、
サブアクターABの特定パラメータのことなのか、
そのパラメータを代入したイベントコマンド上の変数なのか、
サブアクターAとBの特定パラメーターをメインアクターに反映させた別パラメータなのか
フトコロさんのプラグインを用いた追加パラメータのことなのか
など、具体的に何を指しているのかが分からないです。

ご質問1について、
変数AとBはサブアクターAとBの特定パラメータを代入した変数((例) 変数0001: サブアクターA攻撃力、変数0002:サブアクターB攻撃力)のことと思いましたので、
変数を計算→呼び出すという処理の流れは変わらないのだからCを作成すればよい、と回答差し上げています。

2については、バトルイベントでのお話かと思いましたので状況次第と回答差し上げています。
戦闘計算式に用いるのであれば、スキル使用者によって変数を変えるか、専用スキルを作って動かすかになるかと思います。
それはそれでデメリットですね。

また、最後にメニューへの表示ですが
yanflyさんのプラグインを使う・使わない、フトコロさんのプラグインを使う・使わないの組み合わせでそれぞれ表示のロジックが変わりますので、表示方法については内側の処理方法が確定するまで、いったん棚に上げておくべきかと思います。
kote
記事: 10
登録日時: 2021年6月16日(水) 12:57

Re: アクターを変数の代わりに活用する手法

投稿記事by kote » 2021年6月17日(木) 09:56

文章力が低くてすみません

1回目と2回目と同じ表現で違う意味に使ってたらわかりずらいですよね、変えておきます。
kote さんが書きました:通常ステータス(A)と追加のステータス(B)を合算したいのですが、一度足したら足されっぱなしでステータスが変わったときにさらにたされてしまうので常時(A)+(B)にしたいのですが可能ですか?(1回目(A)100+(B)50=(A+B)150、2回目(A+B)150+(B)60=(A+B+B)210なってしまう、本当は2回目もA)100+(B)60=(A+B)160にしたい。)

最初の質問の時のAとBは通常ステータス(A)と追加のステータス(B)です

2については、まだスキルの設定やバトルイベントを最初の質問のとき設定したことがなく、どんな処理をするか知らずまとめてバトル系のイベントと表現したのですが、この表現はどう考えてもバトルイベントのことですよね。
戦闘計算式に用いるのであれば、スキル使用者によって変数を変えるか、専用スキルを作って動かすかになるかと思います。
それはそれでデメリットですね。

このデメリットの解決策として使わないパラメータに追加したい変数を代入して計算式に使うというシステムです。
使わないパラメータが足りなくなったらプラグインで追加するということです。

表示に関してはフトコロ様のFTKR_AddOriginalParametersは簡単に表示できそうだったので、使ったとしてもそんな気にしなくてよさそうです。

全体的に初心者の思いつきなのでガバガバです
sally
記事: 119
登録日時: 2019年8月06日(火) 05:11

Re: アクターを変数の代わりに活用する手法

投稿記事by sally » 2021年6月17日(木) 23:31

ご回答ありがとうございます。

変数とは追加パラメータ含む、アクターのパラメータのことであり、イベントコマンドの変数は無関係という理解であっていますでしょうか。

それでしたら、主人公のパラメータは計算結果を反映させるだけで、変動や計算はそのほか専用のアクター(クラス)や、イベントコマンドの変数に任せた方が安定するかと思います。
サブクラスアクターのパラメータは飽くまで変数の置き場所であって、計算は別途イベントコマンドやプラグインを使うという形ですね。

スキルでサブクラスアクターのパラメータを参照して変動するのであれば、スキル使用効果のコモンイベントで別途計算させるなどをする必要はあるでしょうが。
(攻撃力に使っている変数AとBのうち、戦闘中に変数Bだけが増えるスキルがあるなど)。

これ以上はそのパラメータをどの場面で、どのように、どういう用途で使うなど、もう少しミクロな具体例が出てこないと回答は難しそうですので、
まずは作成してみて頂くのがよさそうです。

“MV:質問” へ戻る