確認したら過去の記事でも似たような内容のことを何度も書いていたようなので、 この記事は3ということにしておきます。 過去の記事 ・ 能力値曲線(2次曲線で能力値曲線を決める例) ・ 能力値定数(ボクらの故郷はこれで能力値を決めています) 今回は2次曲線ではなく、p次曲線(pは実数)として能力値を決める曲線を作ります。 RPGを作ろうと思うと、おおむねこの能力値曲線決めをする過程にぶつかります。 だいたい線形でもいい気はしますが、やっぱりHPとかは レベルが上がるにつれて上昇量が大きくなる方がいいですよね。 そのため、線形を少し進化させて2次曲線によって能力値曲線を作ることがあります。 でも2次曲線は曲がり具合が急だと思われることもたまにあります。 原点頂点の放物線にした場合、レベルが低い段階ではほとんど成長しないのに、 最高レベル付近では相当上昇量が大きくなるなど。 原点を頂点にしなければいいのかもしれませんが、うまく調整しないと レベルの上昇に伴って逆に能力値が下がってしまうなんていう曲線が できてしまうこともあり、案外調整がめんどくさかったりします。 それだったら、頂点は原点だって決めて曲がり具合だけ変えてやれば良さそうですよね。 その曲がり具合の調整を、2次曲線じゃなくてp次曲線にすることで実現します。 まず、頂点の位置をキャラクターの性質に応じて次の2通りで分岐します。
初期レベルaのとき能力値c 最終レベルbのとき能力値d のとき、レベルnのときのパラメータ値は上の通りとします。 最初は成長が遅いけど後からどんどん強くなる晩成型、 最初は成長が速いけど段々頭打ちになってしまう早熟型の2種類です。 晩成型は、初期レベルを頂点にしたもの、 早熟型は、最終レベルを頂点にしたもの、と考えてよいでしょう。 式中のpの値を変えれば、曲線の曲がり具合が変わります(p≧1)。 どちらでもない平均型は、この場合どっちかの式にp=1を入れればOKです。 p=1のとき、晩成型も早熟型も同じ式(直線)になります。 この式にp=2を代入すれば2次曲線となって これまでも考えていた能力値曲線に似るのですが、そうすると 結構急なカーブになってしまって、最初はまったく成長しないのに 後からとんでもなく成長する怪奇主人公が作られてしまう可能性があるので、 pは2より小さな値にしてやったほうがいいと思います。 1.1乗とか1.2乗とかが無難かもしれません。 ツクール2000で指数関数と対数関数を作っておりましたが、 やっとそれっぽい実数乗の使い道が見出せましたね^^; aのb乗は、eの(b×lna)乗として計算してやればOKです。 能力値決めの流れ 上の式を用いて能力値を決める流れを確認してみましょう。 まず第一段階として、式に代入するa~dの値を決めておきましょう。 今回はベイ助君のHPを決めることにしてみます。 レベルの下限は1、レベルの上限は99としましょう。 今から決めるキャラクターの加入時初期レベルが例えば10とかだったとしても そのゲームにおけるレベルの下限が1なら、初期レベルには1を採用して代入すべきです。 そうじゃないと頂点の位置がずれちゃいますからね。 実際その辺りは裁量の兼ね合いなので、何とも言えませんが。 というわけで、ベイ助君は レベル1のときHPが32、レベル99のときHPが8500になるようにしてみましょう。 そして成長の仕方ですが、こういうHPはどんなに早熟であっても 低いレベルのうちは上昇量が少なく、レベルが高くなれば上昇量が大きくなる という特性を持たせるのが一般的ですので、ここでは晩成型としておきます。 案外晩成型ベースの方が扱いやすいかもしれませんね。 晩成型の式にa=1, b=99, c=32, d=8500をそれぞれ代入して…… こうなりました。レベルnのときのHPがa[n]です。 aをこっちの記号としても使っちゃったのでややこしいですね……本当に成り立つのかな? レベル1のときはn=1を代入して、 a[1]=8468×(0/98)^p+32=8468×0^p+32=32 レベル99のときはn=99を代入して、 a[99]=8468×(98/98)^p+32=8468×1^p+32=8500 ちゃんと決めた通りの値になりました。0と1は何乗してもそのままなのがみそですね。 それでは曲がり具合を意味するpの値を決めて、能力値曲線を完成させましょう。 決め方は色々あります。 もうひとつ条件を増やして、レベルなんとかのときHPなんとか、 としてやれば、pを消去することが可能になりますね。 でも曲がり具合を決めたいので、今回は表計算ソフトで数値を入れながら 納得のできるパラメータを探す方法でやってみましょう。 泥くさい計算するよりはきっと楽しいでしょ。
HPは整数でしょうから、小数点以下は四捨五入して構いません。 実運用では整数への四捨五入は、0.5足して小数点以下切り捨てることで実現可能です。 上のグラフはp=1のとき、つまり線形の場合ですね。
p=2(2次曲線)にしてみたグラフです。 晩成型なので、後の方になればなるほど上昇量が増加します。 形はそれっぽくなっていい気がしますけど、実際のHPを確認してみると レベル1のとき32ですが、その次は33, 36, 40, ……と、非常にのっそりと上昇し、 最後の方になると……, 7989, 8158, 8328, 8500となって、 ずいぶん両極端な成長をしてしまっていることが確認できます。 別にこれでもいいような気もしますけど、やっぱりちょっと気になりますよね。
p=1.5にしてみました。こうするとHPは32, 41, 57, 77, ……と成長し、 結構納得のいく値になったのではないかと感じられます。 最後の方は……, 8114, 8242, 8371, 8500となっています。 これで良さそうですね。こうしてベイ助君のHP曲線が完成しました。
一見すると数式がちょっと複雑なんじゃないかと思えそうなのですが、 実際には色んな値をそのキャラクターに合わせて入れてやって 作ることができる、自由度を持たせた作りになっていることが確認できましょう。 いま作ってるRPGはもう全部2次曲線にしちゃいましたが、今後RPGを作ることがあったら 私はとりあえずこの方法で能力値を決めるようにしてみようと思っています。 |