GrzegorzSławeckiによって提供された答えはすでに良いものですが、彼の方法の背後にある理論的根拠を説明し、ソリューションをゲームプレイのニーズに適合させるためのツールを提供したいと思いました。
現在の問題のパラメーターは、プレーヤーの攻撃レベルa、武器のダメージw、1回の攻撃で与えられた合計ダメージd、敵のヘルスH、敵を倒すのに必要な最小ヒット数です。これをnと呼びましょう。
プレーヤーをnヒットで殺したい場合、その合計ダメージdは次のようになります。
(n-1).d <H≤nd 、つまりn = ceil(H / d)。
dが武器ダメージに依存wは、プレイヤーの攻撃レベルでAと我々はそうの書き込みましょう、武器はよりよいレベルが高くなるにつれて得ることを期待することができ、D()と()wは、単にの代わりにdをとwは。プレイヤーが直面している敵もまたタフになると予想されますので、再びH(a)です。これらはすべての増加する関数であり、上記の不等式を満たすようにしたい。問題の未知数は関数です。1つを制約として設定し、他のものを見つけます。ただし、自由度はあります。これは良いことです。
あなたの質問をよく理解していれば、正確なゲームプレイを念頭に置いており、このゲームプレイは主に、敵を倒すために必要なヒット数n(a)によって表されます。したがって、ゲームに想定するゲームプレイに応じてn(a)を設定し、問題の残りの変数を見つけます。あなたの質問が示すように、あなたの最初の試みはあなたが考えているかもしれないアルゴリズムを試すことであり、それが望ましくないゲームプレイをもたらすことに気づいたので、これはあなたが常にすべきことです。
たとえば、プレーヤーがゲームを進行するにつれて、より多くの回数ヒットする必要があるとします。また、必要なヒット数が増えると、増加する頻度が減るので、プレーヤーはゲームの長い部分を2回よりも5回多くヒットします。ここでは何のn()のようになります。
使用される関数はn(a)= ceil(2 / 3.sqrt(a))です。
我々が望むH()/ D()作成すること値の範囲内に留まるため、N()を所望の値とするので有するN()= CEIL(H()/ D())これらの範囲、以下の長方形です:
及びH()/ D()天然に設定することができる()2 / 3.sqrtので、我々は赤い曲線があると、次のグラフを得ること()H()/ D:
備考:ここでH(a)/ d(a)を簡単に見つけることができます。これは、n(a)がceil である関数がわかっているためです。ただし、nの指定があまり適切でない場合は、独自のフィッティングを行う必要があります。さまざまなトリックを使用して機能します。すべての問題がこれで良いとは限りません!
したがって、H(a)/ d(a)をカスタマイズされた平方根関数のようにしたいとし、Hとdは増加する関数でなければならないことを知っています。ソリューションは豊富です。例えば、
H(a)= aです。2 / 3.sqrt(a) および d(a)= a
ただし、ダメージと敵のHPを大幅に増やして、ゲームの終わりにスタイルのためだけに大きく印象的な数字を表示させたいので、代わりに
H(a)=a²。20 / 3.sqrt(a) および d(a)=10.a²
重要な点、そして最良の部分はこれです。問題の解決策(H(a)およびd(a))が仕様(n(a))に従っていることを知っているので、同じn(a)が得られます。、しかしあなたには自由があります。あなたは自分の自由を正確に知っており、それを使用してエクスペリエンスをカスタマイズできます。可能な限り、いつでも自分の最も重要なニーズを満たしながら、常に自分にそのような自由を与えようとする必要があります。
今、私たちは1ヒットダメージ選択したことをD() 、およびので、D()武器ダメージに依存()ワット、我々が使用することができますD()弊社指定のように探してみてくださいワット(Aを)これにより、このd(a)が得られます。原則は同じですが、問題は異なります。武器が同じでも、レベルが上がるにつれ、プレーヤーにもっと大きなダメージを与えたいです。また、武器だけが良くなり、レベルが変わらないときにもダメージを増やしたいです。同じ。
しかし、各要素にはどのような重要性がありますか?バリエーションの大きな一部:我々はレベルが武器よりも重要になりたいと仮定()= A 2はDから独立している必要があります()ワットで、たとえば、
w(a)= 22.sqrt(a) 、したがって、 d(a)=(22.sqrt(a))。(10 / 22.a.sqrt(a))= w(a)。(10 / 22.a.sqrt(a))
w(a)について次のグラフが得られます...
...と、まだ同じD() 、我々は再び仕様に従った解決策見つけたので、ここではD() 、と私たちは性質がして先に言及しているんワットと(私たちが見たとダメージに貢献aとwの関数としてのd:aが固定されており、式d(a、w)= a / 30.wでwが変化した場合、dは引き続きwの増加関数であり、同じことが当てはまります。wを修正して、変化させる場合)。
このw(a)は、武器のゲーム内の説明に表示される値を提供します。たとえば、ゲームで最高の武器を使用して「武器のダメージ:220」を取得します。
ゲームプレイ、したがってn(a)に完全に異なる仕様を使用することもできます。たとえば、ゲームの進行に伴って必要なヒット数が急速に増加し、その後プラトーになり、結果のソリューションが異なるものになります。
playerAttack
ステータスを100 に平準化するのは簡単ですか?これが最大値であることを考えると、数ヒットで敵を殺すことは適切ではないでしょうか?(1000-HPの敵は、ゲームの最初に目にするものですか?標準的な敵ですか?ボスですか?)