数学を計算し、Level
経験に基づいて条件を解くと、以下がXP
得られます。
Level=1+1+8×XP÷50−−−−−−−−−−−−−√2
たとえば、場合のプレーヤーのレベルは何ですか?XP=300
1+1+8×300÷50−−−−−−−−−−−−−√2=4
要求どおり。
または、レベルはXP = 100000
何ですか?
1+1+8×100000÷50−−−−−−−−−−−−−−−−√2=63
レベル1の任意の開始しきい値の場合、より一般的に表現されます。
Level=1+1+8×threshold÷50−−−−−−−−−−−−−−−−−−√2
またXP
、上記のXPの式を解くことにより、逆の操作を行い、任意のレベルに必要なものを計算できます。
XP=(Level2−Level)×threshold2
上記の式は分数で機能しますが、次の整数値に切り捨てる必要があることに注意してください。たとえば、C ++ / C#では、(int)Levelを使用できます。
上記の閉じた形式の式を取得するために、差分方程式、ガウス和、および二次式を使用しました。
この式の解決に段階的に興味があるなら...
私たちは最終的に私たちの考察を始めることによって再帰的なアルゴリズムをします Experience(next_level) = Experience(current_level) + current_level*50
。
たとえば、を取得するには、次のようにします。XPLevel3
XPLevel3=XPLevel2+2×50
ここで2*50
、次のレベルに到達するために必要な経験は現在のレベル* 50であるというOPの要求から来ています。
ここで、式に同じ論理を持つを代入します。あれは:XpLevel2
代用上記の式に:XPLevel2=XPLevel1+2×50
XpLevel3=XpLevel1+1×50+2×50
そして、私たちの開始点である、わずか50です。したがってXpLevel1
XpLevel3=50+2×50=150
より高いレベルと合計の有限連鎖を再帰的に計算するためのパターンを認識することができます。
XpLevelN=50+2×50+3×50+...+(N−1)×50=∑i=0n−1i×50
Nは達成されるレベルです。レベルNのXPを取得するには、Nを解く必要があります。
XpLevelN÷50=∑i=0n−1i
右側は1からN-1までの単純な合計であり、有名なガウスの合計で表すことができます。したがってN×(N+1)÷2−N
XpLevelN÷50=N(N+1)÷2−N
あるいは単に
2∗(XpLevelN−50)÷50=N(N+1)−2N
最後に、すべてを片側に配置します。
0=N2−N−2×XpLevelN÷50
これは、負と正の解を生成する2次式になりました。負のレベルはないため、正の解のみが関係します。現在、次のものを取得します。
N=1+1+4×2×XpLevelN50−−−−−−−−−−−√2
したがって、XPおよび線形しきい値を条件とする現在のレベルは次のとおりです。
Level=1+1+8×XP÷threshold−−−−−−−−−−−−−−−−−−−√2
注これらの手順を知ることは、さらに複雑な進行を解決するのに役立ちます。RPG領域では、ここでの線形進行のほかに、実際にはより一般的な分数の累乗または二乗の関係、たとえば。ただし、ゲームの実装自体については、実行時に計算するのではなく、すべてのレベルの進行を事前に知っておくことが理想的であるため、このソリューションの最適性は低いと考えています。したがって、自分のエンジンでは、前処理済みのエクスペリエンステーブルを使用します。これは、より柔軟で、多くの場合より高速です。ただし、最初にこれらのテーブルを記述するか、単に取得する必要があるものを自問するために、この式はOPの特定の質問に答えることを目的とした最も迅速な方法を提供します。Level=XP√5.0XP
Level 100
編集:この式は正常に機能しており、OPからの要求に応じて、現在のlevel
条件をXP
線形しきい値進行で正しく出力します。(前の式は、プレイヤーがレベル0から開始したと仮定して「レベル+1」を出力しました。これは私の間違いでした。小さな休憩で書いて昼休みに解決しました!:)