私は現在、クラシックな経験値とレベルアップメカニックを備えたRPGゲームを開発しています。プレイヤーはモンスターを殺し、経験値を獲得し、十分に収集してレベルが上がるとレベルが上がります。
各レベルに到達するために必要なEXPポイントの量と、各レベルの各モンスターが獲得するExpの量のバランスをとるにはどうすればよいですか?
私は現在、クラシックな経験値とレベルアップメカニックを備えたRPGゲームを開発しています。プレイヤーはモンスターを殺し、経験値を獲得し、十分に収集してレベルが上がるとレベルが上がります。
各レベルに到達するために必要なEXPポイントの量と、各レベルの各モンスターが獲得するExpの量のバランスをとるにはどうすればよいですか?
回答:
この点について結論を下すための最良の方法は、ゲーム開発におけるほとんどの場合と同様に、最初にゲームをどのようにプレイするかについて考え、次に、ゲームをそのようにプレイすることになる計算を行うことです。
ストーリー重視のシングルプレイヤーRPGでは、レベルアップを一定の報酬ストリームとして維持し、ゲーム全体で数分おきにレベルを上げたいと思うでしょう。レベルアップの割合は一定に保たれるため、レベルごとの分数関数は定数(time = c
)です。
MMORPGのように、より達成に重点を置いたゲームでは、通常、初心者はレベルアップを頻繁に行い、プレーヤーが上に行くほどレベルアップを減らします。その場合、レベルごとの分関数は多項式(time = Level ^ c
)または指数関数(time = c ^ Level
)になります。ただし、指数式でレベル番号をそのまま使用することは、通常、極端になりすぎます。定数で除算して、指数関数性を維持しながら増加を大幅に遅くすることをお勧めします(time = c1 ^ (1 + Level / c2)
)。
スプレッドシートを使って数字を整理することをお勧めします。1から予想される最大レベルまでの数値を含む列と、レベルの数式を含む2番目の列を含むテーブルを作成します。これにより、さまざまな数式を試して、好みの数値を簡単に見つけることができます。多項式を指数成分と組み合わせると、より良い結果が得られるでしょうか?
ここでは正味の戦闘時間が見られます。プレイヤーが積極的に経験値を集めているゲーム時間。プレイヤーがNPCと話し合ったり、装備を比較したり、直接進行しない他のタスクを行ったりする時間はカウントされません。
私の現在のゲーム(MMORPG)では、数式を考え出しましたseconds(level) = 10 ^ (1 + Level / 20)
。最初のいくつかのレベルは実際の戦闘のほんの数秒しかかかりません(チュートリアルフェーズ中はすぐに満足感が得られます)、レベル20〜40は数分かかります。進捗。
敵に明示的な(または意味のある)レベルステータスがない場合でも、特定のキャラクターレベルに対してバランスの取れた挑戦になるように設計する必要があります。しかし、敵がレベル30に推奨されるものよりもレベル40の報酬に推奨される経験のほうがどれだけ多くの経験が必要ですか?
この質問への答えは、キャラクターがレベルごとにどれだけ強力になるか、およびキャラクターレベルで現在の敵の前方または後方にどれだけ遠くまで移動できるようにするかと密接に関連しています。
たとえばWorld of Warcraftのシステムなど、一部のゲームシステムでは、プレイヤーキャラクターのレベルの少し下または上にいる敵との戦闘を行うことはまったく無意味です。ほんの数レベル上のものはプレイヤーを全滅させ、それより少し下のレベルのものは何の挑戦も(そして報酬も)ありません。
反例は、Disgaeaシリーズです。そのゲームでは、スマートにプレイすると、自分のキャラクターの数倍のレベルの敵を簡単に倒すことができます。
プレイヤーにとって公平な戦いであるレベルブラケットにしたい制限が多ければ多いほど、プレイヤーが現在戦っている敵のレベルに遅れをとったり、進んだりしないようにする必要があります。プレイヤーが敵の後ろに落ちると、ゲームは粉砕せずにイライラするほど難しくなります。プレイヤーがモンスターの前を行くと、ゲームは簡単すぎて退屈になります。
プレイヤーをレベルブラケット内に留める良い方法は、レベルごとの経験値報酬を増やすことです。一方では、プレイヤーが推奨レベルをわずかに下回っていても、簡単に追いつくことができます。一方で、より難しいエリアに進まずに弱い敵を効率的にレベルアップすることはできません。
exp = Level ^ c
通常、多項式のexp曲線()がうまく機能します。の値が大きいほど、c
プレイヤーがモンスターと戦っているモンスターの現在のレベルのブラケットに強制的に入れられます。
倒すのに時間がかかる敵は、比例してより多くの経験を与えるはずです。20秒かかる戦闘では、10秒かかる戦闘の2倍の経験値が得られます。これにより、数式がに拡張されますexp = (Level ^ c) * minutes_per_combat
。
これで、最終的な式を2つから導き出すことができます。experience per level
されるtime per level in minutes
と乗算しますexperience gained per minute
。したがって、最後の2つのセクションで思いついた2つの式を取り、それらを乗算します。そこにあります:あなたのレベルごとの経験式。
レベルごとの多項式時間増加の場合、式は次のようになります。
exp(level) = (level ^ c1) * (level ^ c2)
どこ
c1
各レベルの所要時間によって異なりますc2
プレイヤーが敵と戦うレベルにどれだけ近づけたいかに依存します考え抜かれた最高のコンセプトでさえ、適切なプレイテストを置き換えることはできません。平均的なプレーヤーの進行が予想よりもはるかに遅い、または遅いことがプレイテストで判明した場合、通常は、敵の推奨レベルと、平均的なプレーヤーが敵を倒すのにかかる時間を過大または過小評価している兆候です。プレイテスターと一緒に、どのキャラクターレベルでどの敵を倒すのが難しいかを分析し、それに応じてexp値または統計を調整してください。