• ベストアンサー

RPGでの雑魚敵に対する経験値の振り分け方について

またよろしくお願いします。 例えばレベル1から99まであった時に、 レベル1から2に上がるには敵との戦闘を凡そ6回必要だとします。 レベル2から3は凡そ8回だとします。 ただ、この8回はもらえる経験値が増えた状態での8回です(この必要戦闘回数決め方も知りたいです) そういうふうにレベルが上がれば敵からもらえる経験値が増え、 レベルアップに必要な戦闘回数も増えてくると思います。 ただ雑魚敵は必ずしも1体で出てくるわけではないので、 1体にどのくらいの経験値を与えてやるのかなどを考える必要があると思います。 このようなある程度決まった(プログラムで処理できる)振り分け方あるのか、 それとも手動で1つ1つやっていくものなのでしょうか? もちろん微調整などは手動だと思いますが。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.4

★戦闘回数の意味がようやく分かりました。 >ファミコン版のドラクエ(通常RPG)と同じです。  ↑  そうなんですか。  それなら、およそn回戦って次のレベルに上がるというのは経験値を上手く設定した場合の  事ですね。ドラクエでは仲間レベルの合計とモンスターレベルを上手く使って同じ場所でも  仲間のレベルによっては出現する『雑魚敵』の数が変ります。 ・たとえば最初は1人でアリアハンのスライムと戦いますがこのとき 1~3匹しか現れません。  でも仲間が増えたり、レベルが高いと同じアリアハンでもスライムが最大で9匹も現れます。  さらに夜はモンスター・レベルが 2 つ上がるようです。これにより、レベルが低くても  夜だとスライムの出現数が増えるのです。  これは、夜の概念やモンスター・レベルを上手く利用しているわけです。 >ドラクエの場合、1匹1匹の敵の経験値は手動で決めているのでしょうか? >それとも逆算できるような計算で決めているのでしょうか?  ↑  手動で決めていると思います。  ガイドブックのデータがそのまま固定データとして持っているのでしょう。  なのでガイドブックの情報がかなり参考になると思います。  モンスターレベルもゲーム中に町の人がちゃんとメッセージで言っています。  このことから夜はモンスター・レベルが上がり、敵数が増えることがわかります。 >つまりレベル8の時に、アリアハンでスライムと戦ってたら、たくさんの戦闘回数が必要になりますよね。  ↑  これはモンスターの経験値が固定だからです。  でも仲間のレベルに応じて最初は1~3匹しか出現しなかったスライムが、レベルが高いと最大で  9匹も現れるようにプログラムで行っているようです。 ・今回の質問はレベルアップまでの次の経験値を指数的に増えるように数列を使って求めれば  良いと思います。そうすれば終盤では戦闘回数を多くしないとレベルアップできないように  なります。もし、指数的ではなく正比例するような経験値だと終盤では敵の経験値が高いので  簡単にレベルアップしてしまいます。 ・この数列がゲームのバランスになります。  また、職業によっても数式を可変できるようにしておくことで『職業による特徴』を持たせる  ことが出来ます。例えば、勇者はバランスよく、魔法使いは経験値をたくさん稼がないとレベルアップ  しないとか、賢者は魔法使いよりももっと経験値を稼がないとレベルアップできないようにするわけです。 ・下にドラクエの次の到達経験値に近い計算が出来たサンプルを載せておきます。 #include <stdio.h> #include <stdlib.h> #define ERR (-1) /* 経験値のレベルアップを計算 */ static long Calc_Expert( int level, int begin, int sub, int div ) {  unsigned long dif = 0L;  unsigned long exp = 0L;  unsigned long top = 2L;  unsigned long bas = 1L;  int lv;    for ( lv = 1 ; lv < level ; lv++, exp += dif ){   if ( !((lv - sub) % div) ){    bas = (bas * 2L);    top = (bas + 1L);   }   if ( bas == 0L ){    return( ERR );   }   if ( lv == 1 ){    dif = begin;   }   else{    dif = (dif * top / bas);   }  }  printf( "%3d: %10lu %10lu %10lu/%lu\n", level, dif, exp, top, bas );  return exp; } /* テスト用のメイン関数 */ int main( int argc, char *argv[] ) {  static int level, begin = 12, sub = 4, div = 8;    if ( argc > 1 ) begin = atoi( argv[1] );  if ( argc > 2 ) sub = atoi( argv[2] );  if ( argc > 3 ) div = atoi( argv[3] );    printf( "\n Lv:   (等差)  (経験値)    (倍率)\n" );    for ( level = 1 ; level <= 100 ; level++ ){   Calc_Expert( level, begin, sub, div );  }  return 0; } その他: ・コマンドラインから引数を与えるといろいろと経験値が変化します。  引数1…開始経験値  引数2…加速度の補正制御1  引数3…加速度の補正制御2  だったと思います。  もう10年以上前なので正確なパラメータの呼び名を忘れてしまいました。  サンプル・ソースの begin=12、sub=4、div=8 はスーパーファミコン版のドラクエIIIの  戦士のレベルアップ経験値の設定です。  勇者なら引数1を 29 で引数2、3 は忘れました。微調整して下さい。 ・以上。参考に。

takagoo100
質問者

お礼

ご返答ありがとうございます。 >同じ場所でも仲間のレベルによっては出現する『雑魚敵』の数が変ります。 結構3やってるんですけど、自分は気づかなかったですね・・・ 今度やる時があったら注意して見てみたいと思います。 サンプルありがとうございます。 これは凄いですね・・・一覧見たときちょっと感動しました。 指数使ってるので、少し弄っただけで大きく結果が違ってきますね。 これからいろいろ調整してみたいと思います。

その他の回答 (3)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★最初に。 ・ドラクエはレベルアップするために必要な『次の到達経験値』が予め計算されています。  この計算式は数列を使っていますがかなり複雑です。昔ほぼ同じ数式を試行錯誤で探しましたので。  ドラクエの場合は『敵』からもらえる経験値が固定でレベルアップする次の『到達経験値』が  数列により変化します。また、モンスターレベルが存在して仲間のレベル合計と比較して  敵パーティの出現数(パターン)が決まります。→スーパーファミコンの『ドラクエIII』の場合。 ・今回の質問は『敵』もレベルアップに応じてもらえる経験値が変化するんですね。  この考えだと戦闘回数と経験値との対応が難しくなりませんか?  どちらか一方を基準にレベルアップさせた方が良いと思います。 ・戦闘回数を基準にする場合は1つの戦闘でもらえる『全体の平均経験値』と『レベルアップまでの戦闘回数』  を掛けた値を次にレベルアップするための『到達経験値』とすれば良い。 ・経験値を基準にする場合は次のレベルアップするための『到達経験値』を先に計算します。  そして『レベルアップまでの戦闘回数』で割った数を1つの戦闘でもらえる『全体の平均経験値』と  します。この平均経験値を元に『雑魚敵』の出現数(パターン)を戦闘開始時に計算します。  例えば戦闘後にもらえる平均経験値が 100 のとき  最初は  敵1…Exp=20  敵2…Exp=20  敵3…Exp=30  敵4…Exp=30←(20+20+30+30=100)  となります。そしてレベルアップして敵の経験値が増大すると次の戦闘時では  敵1…Exp=25  敵2…Exp=25  敵3…Exp=40←(25+25+40=90)…100以内に出現数を計算で合わせる  の3体が出現するように出現数(パターン)を計算で組み合わせます。  このようにした場合、敵のもらえる経験値もレベルに応じて簡単な数列で計算により算出するように  管理すれば良いと思います。このときの数式は敵により異なるように管理しても良いでしょう。  そうすれば  敵1はあまり経験値が増えない。  敵2はよく経験値が増える。  敵3は経験値が減少していく。  などのバリエーションを出せます。 ・もう一度、敵からもらえる経験値の管理を整理してみて下さい。  あとレベルアップする数式とかも単純に LV×100 なのか、指数的に増加させるのかも整理してみましょう。 その他: ・地形によりモンスターの出現率を設定できるようにすれば、終盤で訪れるマップには戦闘する確立が  高くなるように設定できます。また、洞窟や塔などは草原に比べてよく敵と遭遇すうようにも設定  できます。さらに発展させるとゲームイベントで一歩歩くごとに必ず敵と遭遇して戦闘状態になる設定や  全く戦闘状態にならないようにイベント命令で制御することが可能になります。 最後に: ・地形(マップ)の管理構造、ゲームイベントを制御する簡易言語なども含めてもう一度、仕様を  整理すべきだと思います。どんな演出を可能にするか、どんな戦闘方法かもきちんと決めてから  プログラミングした方が効率が良いですよ。 ・以上。

takagoo100
質問者

お礼

ご返答ありがとうございます。 なるほど、イベントなどと絡めるとさらに考慮することが増えそうですね・・・ >・今回の質問は『敵』もレベルアップに応じてもらえる経験値が変化するんですね。 自分の説明が悪いんですけど、ここはそうではなくて別の敵(強さも経験値も以前の敵より上ですよね) になるので、その状態で戦闘回数も増えてくるということです。 ファミコン版のドラクエ(通常RPG)と同じです。 レベル1の時はアリアハンでスライム(経験値1だとします)などと凡そ5回戦って次のレベルに上がります。 レベル8ぐらいの時はロマリアでさまよう鎧(経験値10だとします)などと凡そ15回戦って次のレベルに上がります。 つまりレベル8の時に、アリアハンでスライムと戦ってたら、たくさんの戦闘回数が必要になりますよね。 >ドラクエの場合は『敵』からもらえる経験値が固定 とあるのですが、ドラクエの場合、1匹1匹の敵の経験値は手動で決めているのでしょうか? それとも逆算できるような計算で決めているのでしょうか? >どんな演出を可能にするか、どんな戦闘方法かもきちんと決めてからプログラミングした方が効率が良いですよ。 ここは自分でも身にしみて感じています・・・ 今回はプログラムの勉強だと割り切ってやっている部分もあるので、 新たな発見ができれば幸いです。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

前に答えたことがあった人かな。確かダメージ計算式で。 ここに書いたのは自分ならこうすると言う話であって、唯一の答えではありません。 (1)レベルアップと戦闘回数。 最初は少ない戦闘回数で上がりやすく設定します。最初戦闘パーティの人数が少ないでしょうから、敵の数も少なめで。ドラクエ的なバランスなら2~3回の戦闘でレベル上がっても良いかもしれません。 途中からは戦闘回数が増えるようにして行きますが、1レベルに必要な戦闘回数があまり増えすぎるのも問題なので、1レベルに2~1回づつ増えるぐらいでよいのでは?増え方も後半ほど少なくしたほうが良いかと思います。 例えば、 レベル1→2(3回) レベル 9→10(19回)ここら辺まで2回ずつ増える。 レベル10→11(20回)ここらから1回ずつ。 レベル19→20(30回)ここらからさらに減らします。 レベル29→30(35回)ここらからさらに減らします。 といった感じでしょうか。 プログラムで想定回数は算出できると思います。 もしクリアレベルが50ぐらいだとすれば、レベル50以降は同じ戦闘回数でレベルアップできたほうが良いと思いませんか? これはあくまで想定レベルでの戦闘回数ですので、実際にやってみると想定と印象がぜんぜん違う事がほとんどです。 あくまで最初にパラメータを決める基準だと思ってください。 (2)最終的な戦闘回数の決め方 実際には1戦闘のターン数や敵のバリエーション数で決まります。ようするに飽きない、単調にならない回数で抑えないと面白くありません。 想定した戦闘回数より少なくしないと無理がある場合は、1戦闘の経験値を増やしてやってバランスをとります。ここは手作業です。 中、大ボス前は、レベルを上がりやすくしたり、レベルの上がりやすい場所やレベルの上がりづらい場所を作ったりするもサジ加減です。 新しい土地に移った当初は、レベルが上がりやすいと気持ちよかったりしますよね。そういう緩急をつけないと味が出ません。 (3)モンスター毎の経験値の振り分け。 これも想定戦闘回数と経験値と敵パーティの構成、敵パーティの出現率から計算で求められます。ただし、モンスター毎に強さが違うでしょうから割り振る経験値は差を出せるような係数データを手作業で作っておく必要があります。

takagoo100
質問者

お礼

ご返答ありがとうございます。 >1レベルに2~1回づつ増えるぐらいでよいのでは?増え方も後半ほど少なくしたほうが良いかと思います。 自分の中では、終盤に進むにつれ、戦闘回数がどんどん増えてくイメージがあったのですが、 実際はそんなに増えてないかもですね。基本となる戦闘回数が多くなってるので そう思えるだけだったのかも・・・ >実際には1戦闘のターン数や敵のバリエーション数で決まります。 なるほど、ここまでは考えてなかったです。確かに考慮に入れる必要があるかも。 >割り振る経験値は差を出せるような係数データを手作業で作っておく必要があります。 なんとなくですが、方向性が見えたような気がします。ありがとうございます。

noname#39970
noname#39970
回答No.1

決め方は どこを基準にするか 良くあるのが Lvごとに差を取ると同じ、または一定の規則を持っているもの。  必要経験値  Lv1 … 100 (100)  Lv2 … 300 (200)  Lv3 … 600 (300)  Lv4 … 1000 (400) この分布に従いLv帯域での平均的な強さを求め敵の強さと経験値を決定すれば良い。 差を取ると同じっていうのは、大抵はLvが上昇すると同じ獲得方法では経験値が下がるというやり方。 これはそのLvで、次へ上がるための経験値が同じなのでそのLv帯域での強さでの敵の経験値が設定しやすくなる。  必要経験値  Lv1 … 1000 (1000)  Lv2 … 2000 (1000)  Lv3 … 3000 (1000)   ただし敵は「基本EXP / Lv」で獲得経験値を求める のようなやり方。 他にもあるけど 参考まで。

takagoo100
質問者

お礼

ご返答ありがとうございます。 結構いろんなやり方がありますね。 経験値が下がるというのはなんか簡単そうでいいですね。 でも下がるというのが少し抵抗があるかな、あんまりそういうRPGを見かけないので。

関連するQ&A

  • オブリビオンの敵の強さについて、

    オブリビオンの敵の強さについて、 このゲームでは自分のレベルに合わせて敵が強くなると聞きましたが、 全ての敵がそういう仕組みになっているのでしょうか? 例えば、クエスト等で倒す必要がある敵に対して、 今は勝ち目が無いと判断して、レベルアップしてから再戦を挑むと 敵も強くなっていて、やっぱり楽には勝たせてもらえない、 という認識でよろしいでしょうか? 今、魚を殺すクエストでちょっと手こずっているので、 後回しにしようかと思ったところで上の疑問に当たりました。 アドバイスお願いします。

  • FFIIIについて

    FCとDSではDSの方が難易度が低いのですか? 戦闘のバランスがかなり変わっているらしいです.、 やってみて雑魚敵が強くなっているような気がしますが、 きのせいでしょうか? 出現率の低下、一回の戦闘で3体までしか出ないのは 易しくなったのかもしれませんけど. 敵から一回に受けるダメージも大きくなったような気がします. 特に後列においた魔導師がすぐ戦闘不能になります. 後列でも受けるダメージが下がらないのですか? FCとDSのFFIIIを両方やったことある人おねがいします.

  • ロマサガ2の術レベルの上げ方?

    ロマサガ2の術レベルの上げ方? ロマサガ2の火・水・土・風・光・冥などの術レベルをあげるには 術を使えってゲーム中にもありましたが あれの術の使用回数カウント概念って ・純粋に回数の事、 ・1回の戦闘で何回術を使っても1回使用とカウントされる ・術で敵を倒した(トドメ)回数 ・それ以外 どれに当てはまるのでしょうか?

  • バルドスカイ1の兵器強化方法

    今バルドスカイ1をやっているのですが敵が強すぎて進めません。 このゲームってどうやってRPGのレベル上げ場みたいに兵器の強化とか開発に必要な回数を満たしたりするのですか? 戦闘回数が決まっていて全然開発も強化もできません。 何回も同じところで戦ったりして強化とか開発とかできないんでしょうか? どうすればいいですか?

  • RPGで誰が攻撃を受けるのかを決めたい

    よくあるRPGゲームで複数パーティだと基本となる処理だと思うのですが 自分にはいまいち分かりません。 ・構造体 member_info[4]; (構造体のメンバはHP,MPなど、ここにランダムの範囲を制御するメンバを入れたほうがいい?) ・パーティは4人組 ・パーティの先頭にいる人ほど敵からの攻撃を受けやすい ・100でランダムを発生させた結果で誰が攻撃を受けるか決定する(例えば 1人目(member_info[0])の場合は0~24までの数がでれば攻撃を受ける、 同様に2人目(member_info[1])は25~49) というシステムを作りたいのですが、その場合のアルゴリズム(プログラム)は どのようになるのでしょうか? 例えば、4人均等な確率で攻撃を受けるとしたら単純に25ずつで区切っていけば 良いと思うのですが、誰かが死んで3人とかになってた場合とかも考慮しないといけないですし、 先頭にいる人ほど受けやすいのですから、ある程度偏りを作らねばなりません。 その偏りを手動じゃなくて、どうプログラムで組んでいけるのかが知りたいです。

  • PSのファイナルファンタジータクティクス

    PSのファイナルファンタジータクティクス これは、エンディングまで半自動的にストーリーが進んでいき、 戦闘も順々に進んでいくのでしょうか? 例えば、普通のFF5やFF6の様に、 フィールドを歩いて雑魚敵を沢山倒してレベル上げをする事とかは不可能なのでしょうか?

  • ファントムブレイブについての質問

    今ファントムブレイブをしているのですが経験値について質問させてください。 たたかってて敵を倒すとレベルがあがりますよね? ということは敵を倒して経験値を得ているんですよね? では戦闘後にもらえる経験値はなんなのでしょうか? またなぜ戦闘後の経験値は同じキャラ同士で違いが出るのでしょうか?

  • FF13について教えてください

    この前、PS3を購入しました。 そこで、FF13を買うかどうか迷っています。 というのが、、「戦闘が難しい」「ストーリーがわかりにくい」などの感想や口コミがちらほら見受けられます。 今までFFシリーズは6・7・8・9・10・12をしてきました。6・7・9・10・12はエンディングまでちゃんと見ましたが、(何度も最終ボスに全滅されながらも奇跡的にクリアしたような感じです)8はおそらく最後らへんのボスのはずでしたが何度やってもすぐ全滅してしまい、エンディングを見ないまま放置してしまいました。 (私の性格上RPGをする際はレベルをあげまっくて、中ボスなどをさくっとやっつけるタイプなのですがあとで知ったのですが、8は自分のレベルをあげまくると相手も強敵になるみたいですね。このことを知ったあと低レベルでがんばってもう1回してみたのですが逆に雑魚にやられっぱなしで、またまた放置してしまいました) ボス攻略の目安レベルなどを見ると十分達してはいるのですが、それでも何度も全滅させられるということは、RPG初心者もしくは下手なんだろうな~とは思います(苦笑) 1.2.4.5もとりあえずやってみたのですが、雑魚敵でよくゲームオーバーになったり、ストーリーに興味がもてずにおそらく序盤~中盤あたりで放置してしまいました(汗) RPGは好きなのですが、システムが難しかったり、戦闘が難しかったり(やたらと雑魚敵が強い)、ストーリがややこしすぎたりすると途中でやる気がなくなり放置してしまう事が多いです。 なので(すいません、ここから本題なのですが)、 (1)FF13は戦闘(雑魚が強い・雑魚でゲームオーバーにもよくなる)はこんな初心者で下手な私には難しいでしょうか? (2)FF13のストーリーはわかりにくいのでしょうか?(造語が結構あるとは口コミで書かれてました) (3)FF13をすでにプレイされた方の中で、すごく感動した!とか泣けた!とかという方はいらっしゃいますか?またはFFシリーズの中では最高のストーリーだった!でもかまいません。(ストーリーが感動できたり、泣けるような内容であればやろうかな・・という気持ちはあります) あまり興味がそそられそうになかったら、別のソフトを買おうかなとおもってます。 よろしくお願いします。

  • RPGの戦闘アルゴリズムについて

    このジャンルでお願いします。 例えば、ドラゴンクエストモンスターズ http://way78.com/gb/dqm2/mgc.html のような戦闘システムを再現したいと考えているのですが、 単純な攻撃特技なら耐性と照らし合わせてダメージを算出するだけだと思います。 ただ補助特技や補助特技の ・たかくとびあがる(次のターンに攻撃) ・うけながし(自分が受けた攻撃を敵か味方に受け流す) ・ふういんのいのり(自分の受けた特技を敵味方一切使えなくする) ・まねまね(敵から受けた攻撃をそのまま跳ね返す) ・きあいをためる(ターンの最後に通常の1.5倍の打撃を与える) ・せいしんとういつ(次のターンの攻撃が2回連続になる) ここらへんの処理を実装するとなるとかなり複雑になりそうです・・・(他にもややこしそうなのがありますが) 自分では考えられそうもないので、 ネットなどで戦闘システムを検索したり関連の書籍を探したりしたのですが、 簡単な戦闘システム(1対1で単純な攻撃だけとか)の説明しか今のところ見つかりませんでした・・・ 少し考えてみたのですが、キャラの状態が ・飛んでるとき ・気合を溜めてるとき ・何らかの状態異常のとき(混乱や麻痺) は攻撃ができなくて、混乱してる時は麻痺をかけられても効かないとすると、 有限ステートマシンなどのアルゴリズムを利用した方がいいのかな?と 思ったりして、でもそもそも上の3つの場合を一まとめにできるものなのか とにかくわけがわからず想像ができないです・・・ みなさんならどのようにクラス分けして処理していくか知りたいです。 またはこのような戦闘のアルゴリズムが書かれてる書籍などありましたら 紹介して頂けないでしょうか?

  • 真・三國無双3で経験値について

    このゲームで、敵武将を倒してもらえる盾とか剣のアイテムで 攻撃力とか上がっていきますが、これは無限に上がるんですかね? 逆に、武勲と武器レベルは上限があって、すなわち 雑魚をたくさん倒す必要はなくなってくるって事ですよね? レベル10の武器を取るために「難しい」モードでやっても、 全くクリアできないとき、アイテムと武将を倒しての 攻撃力や守備力を上げるしか方法はないですよね? アイテムは運不運があるので、基本は武将をひたすら倒していく しか無いって事ですかね? 知ってる方教えてください。

専門家に質問してみよう