ニル 2020/06/23 12:18

育成システムについて考える

育成システムについて考える

RPGだけでなく色々なゲームでありますよね。育成システム。
その筆頭がレベルであり、他にもトレーニングや使い込みで永続的に能力が上がる……
とかだったり、FF10のスフィア盤なんかも独特ですよね。
そういう多種多様な育成システムがある中で、

俺が好きなのはスキルツリーシステムなんですよね。

↑の画面はグリムドーンというハクスラです。

フトコロさんのスキルツリープラグインもとても素晴らしいモノなのですが、

強化したらどうなるかは分からないんですよねー。
それと、威力だけは計算式でどうにかなりますが、
追加効果とかはどうにもならないです。
その辺りの説明も含めるとスキルそのものの説明文を書き換えるしかないわけで。


レベル分のスキルを用意するか……?


と、実はかなり初期の段階で一度、
このプラグインを試した後に考えたことがありました。


結果から言えば、却下したんですけどね。
その理由は自作戦闘システムである、

『スキル連携:チェーンシステム』

にも深く結びついていて、あれって実は取得しているスキルと関連するスキルを、
2つも持ってるんですよ。

https://www.youtube.com/watch?v=hHvSehdW1XU&t=353s

以前も貼った動画ですが、こういう感じの連携です。


【フルスイング】という戦闘で用いられるスキル

【フルスイング】(連携可能)
【フルスイング】(連携不能)

この二つの何方を覚えているかで、
フルスイングへの連携を許可するかしないかを決めています。

2個のスキルで分岐することも出来るのですが、
設定時は名前で【連携可能】とか見えてる方が良いですけど、
戦闘中は見えて欲しくないじゃないですか。

そんな訳で一つに付き3倍のスキルとなってしまいました。
アイテムとかじゃないのは、アクターそれぞれの取得状況を判別出来ると言うのが、
最も都合が良かったからですね。


……でまぁ、これでランクによってスキル数が肥大化すると、条件分岐が肥大化し、
もう手に負えないと考えたから実装を見送った経緯があります。

余談

ただ、一つ思いついたのは、この連携可否をスキルの取得回数で分岐させる事で、
スキルの数を3分の1……とまではいかずとも、半分未満まで削れそうなんですよね。
その場合、スキルツリーシステムで取得状況を1段階だけ戻す。
という処理の追加さえできればと思いますがー……。

ガワだけは割と簡単に出来ましたが、中身の処理が出来ません。

Window_StsConf.prototype.makeItemList = function() {
  this._data = [
    {dicision:true, disp:FTKR.STS.conf.okFormat},
    {dicision:true, disp:FTKR.STS.conf.declineFormat},
    {dicision:false, disp:FTKR.STS.conf.cancelFormat}

  ];
};

    {dicision:true, disp:FTKR.STS.conf.declineFormat},        

が追加した行ですが、dicisionはtureかfalseしか入らない…?
その上、ここで選んだ処理内容で進むので、現状は一段階戻るを押したところで、
true 側の処理。つまり一段階、取得段階が進むだけです。

なんとかしたいなぁ。

やりたいことは、ここの分岐で取得段階が2以上のスキルに限り、
1段階下げるというもの。そもそもデフォルトで一段階戻すことを用意していないのは、
ツリーでより上位のスキルの取得状況との兼ね合いとかをどうするかに迷った?
とか面倒になったから、一括リセットしかないのかなと。

なので、スキルの取得状態及び、前提スキルの状態は維持したまま、
スキルの取得回数を一段階下げる事を可能にしたい。

……ということですね。

一段階下げる処理だけであれば

Game_Actor.prototype.stsCountUp = function(skillId) {
    if (FTKR.STS.enableSkillCount) {
        this.setStsSkillCount(skillId, this.stsCount(skillId) + 1);
    } else {
        this.setStsSkillCount(skillId, + 1);
    }
};

これをこういう感じの文を一段階下げる分岐に与えれば良いと思うのですが、

this.setStsSkillCount(skillId, this.stsCount(skillId) - 1);
        

そもそもそこまで処理としてたどり着けないんですよね。



もし分かる方がいらっしゃいましたら、ご教授頂けたらめっちゃ喜びます。
スクリプト難しい。マジで難しい。

更に余談

そういうスキル圧縮が出来れば、スキル枠が開いてくるので、
スキルツリーにパッシブスキルを入れていけそうなんですよね。
ただ、パッシブスキルって色々見ていっても、
やっぱり、独自のステータスを増やす事とかは出来なさそうなんですよ。

例えば、属性攻撃力とかね?

で、そういうモノって”特徴”を有する場所に記述できるケースが多くて、
何が言いたいかって、枠は余計に食いますが、
ステートが中継地点としては一番使い勝手が良いわけです。

で、

YEP_AutoPassiveStates

は、スキルにパッシブステートを付ける事が出来るので、
空のパッシブスキルに扱いのモノに、ステートを付与する事で、
自由自在なステータス強化が可能になる。と。

そうするとですよ。
多様なプラグインから引っ張ってきた、多くの独自仕様を変更させることが出来る、
とてもスキルツリーらしいスキルツリーが出来そうです。

まぁ、その分スキルとステートの幅を取ってしまいますが。

……という訳で、暫くは改変を頑張ってみます。
無理そうならツクマテなりで質問する事にしますかねー。



なんか余談のまま終わっちゃいましたがそんな感じです。

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索