モンスター戦について考えてみた
エボニーではモンスター狩りといってモンスターを倒す事ができます。今回はこれについて考えてみました
ターン制を導入
エボニーは戦闘は基本的にオート(自動)で自分がすることはありません。ただ見ていて結果をレポートとしてメールが来るだけです。
現状わかっていること
- 単独(騎兵のみ)でモンスター攻撃
- 混合(騎兵+α)でモンスター攻撃
- 単独(騎兵のレベル違い)でモンスターを攻撃
- 負傷兵が0の場合と0でない場合がある
- ソロとレイドで倒せる
まだありそうですが、こんなとこがおもいつく限りです。僕は基本的に騎兵をレベルわけて攻撃というのはないので、自分でやったのは以下になります
- 単独(騎兵のみ)でモンスター攻撃
- 混合(騎兵プラスα)でモンスターを攻撃
僕の場合は混合は射撃兵だけになります。歩兵や攻城兵器は正直作れてないのがあります・・・
負傷兵0のケース
- 騎兵オンリーで攻める
- 混合だけど騎兵だけが負傷兵で射撃兵は負傷0
こんなのがあります。というわけで色々勝手に考えてみたいと思います
条件
- ボスモンスター:Lv1 ラヴァタートル
- 将軍:ジョセフ・E・ジョンストン
- 神器など:どの戦闘でも全て同じ
- 兵レベル:10(騎兵/射撃兵)
実はLv1のラヴァタートルを騎兵オンリーで負傷兵0で倒せたことはありません。
自軍の兵士が先に攻撃?
兵士が先に攻撃を仕掛ける場合、そのままモンスターを倒せたなら負傷兵は0になると思います。
モンスターが先に攻撃?
このパターンもあり得ると思ってます。モンスター狩りのエフェクトを見ているとボスモンスターも攻撃をしているのがわかります。
僕の場合、騎兵と射撃兵を混ぜて攻撃をしました。
- 騎兵:13万人
- 射撃兵:3万人
というのでいきました。結果としては
- 負傷兵:1,938人/騎兵のみ
となりました。
ちなみに、以下の方法でも攻撃しましたが負傷兵は変わりませんでした。
- 騎兵:13万人
- 射撃兵:0
この結果からわかるのは、射撃兵は攻撃をしていない という事かなと思いました。仮に騎兵が先に攻撃をして、倒せなくて射撃兵が攻撃をして倒したという場合は騎兵単独で負けとなるはずです。
結果としては騎兵単独でも勝っております。
個人的には、モンスターが先に攻撃→負傷兵がでる→残った騎兵で攻撃→モンスターを倒す というのがあるのではないかな?と思いました
射撃兵も怪我人がでる
兵士の数を変えて再度チャレンジしてみました
- 騎兵:9万人
- 射撃兵:7万人
このときの負傷兵は以下のようになります
- 負傷兵:4,971(騎兵/3,391人 射撃兵/1,580人)
次に兵士の数を変えてみました
- 騎兵:10万人
- 射撃兵:6万人
このときの負傷兵は以下のようになります
- 負傷兵:3,697(騎兵/2,907人 射撃兵/790人)
このような結果になりました。
もし先制攻撃が自軍だとしたら
騎兵が攻撃→モンスター攻撃(騎兵が負傷兵となる)→射撃兵が攻撃→倒す
となります。この場合は射撃兵が怪我をしない事になります。仮に以下のようだとします
騎兵が攻撃→モンスター攻撃(騎兵が負傷兵となる)→射撃兵が攻撃→モンスターが攻撃(射撃兵の負傷者がでる)→??
自軍が先に攻撃をした場合、射撃兵の負傷者がでた後誰が攻撃するの?となります。
攻撃は常に1回だけ
個人的にターン制だったとしても、何ターンもあるのではなく常に1回ではないかなと思ってます。騎兵が攻撃→モンスターが攻撃→騎兵が攻撃というのはないと思ってます。騎兵が攻撃→モンスターが攻撃→射撃兵が攻撃という形かなと
つまり、同レベルの兵士は1回攻撃したら終わりで、2回目の攻撃はないと思ってます。モンスターも同じで1回の攻撃で10%の負傷者をだすか出さないかだと思います。
仕様的にその方が楽
根拠は特にありませんが、自分がこの手のプログラミングをするとなったら、兵士がレベル一つでも○○ターン攻撃などの計算式を考えたり、条件式を考えるのは正直複雑で面倒です。エボニーの場合は研究・バフ・デバフがありかなり複雑な仕様だと思います。戦闘までそこまで面倒な事をやればバグなどに繋がります。なので常にシンプルに考えていくのがプログラミング的にはありかなと
条件式で変えている
- A:プレイヤーの先制攻撃
- B:モンスターの先制攻撃
この二つがあり、条件によって変わるというのがしっくり来るのかなと思ってます。例えば騎兵オンリーでも混合でも、負傷兵が0になるならAパターン。それ以外はBパターンという考えです。
仕組み的に、モンスターを先制攻撃→計算によって負傷兵0→プレイヤーが攻撃というのを作るより、最初からプレイヤーが攻撃→モンスター倒すのほうが処理も少ないため、サーバーの負荷も減ります。こういったゲームでは重たいのも嫌われるので、いかに早く処理するかを考えると物事はシンプルに考えるという風になってくるかなと思います。
何回も攻防を繰り返すのは処理がそれだけかかり、結果として重くなりユーザー離れにもつながります。であれば1回の攻撃で全てを簡潔できるようにしたほうがいいかなーと思われます。
※あくまでゲーム作成する立場として考えた場合です
僕はエンジニアであってプログラマーではないのと、ゲームを作っている人間ではないのでこのあたりはどこまで考慮されているか正直わからないとこはあります
パワーが一つの指標
エボニーにはボスモンスターだけではなく、通常のモンスター、イベントモンスター、各プレイヤーにも必ずパワーが表示されています。このパワーは当てにならないなどネットでも書いてあったりします。
グリフィンよりも魔女のほうがパワー弱いのに、倒せないとか普通にあるのであまり役にたたないなーとは確かに思います。
では何のためにあるのか?
研究やバフで数値は異なってくるので、無くてもいいかもしれないと思いますが、個人的におそらくこのパワーが↑の条件式があったとしたら関係しているのではないかなと思います。
先ほども書いたように、この手のゲームは無駄な処理=重くなるのでできるだけ無駄な処理を避けたいというのがあります。例えば負傷兵0で倒すには、実は兵士レベル○○以上が○○人という風に書くと面倒です。
兵士レベル8が1万人以上となったとしたら、兵士レベル9で9999人の場合はどうなる?など問題が起きます。将軍は同じでも兵レベル8の1万人で倒せたのに兵レベル9の9999人では倒せないという問題が起きたりします。
ユーザーの神器や将軍の強さ、バフによってこのあたりの数値は変わってきます。このあたりをシンプルに考えると
モンスターのパワーの○○以上のパワーなら負傷兵0それ以外は負傷兵でるというような考え方のほうがシンプルです
Lv1のラヴァタートルは12.4Mのパワーです。自分の騎兵16万人の攻撃だとパワーは6.3Mとなります。約半分のパワーですが負傷兵はでますが倒せる事になります。このパワーが実は8割以上とかなら負傷兵0となり、Aのプレイヤー先制攻撃となるとかなら仕組みとしては楽です。
モンスターによって比率を変えるとしても、複雑な式はいらないかなーと思います。
敗北は条件式で成り立つ
上記の考えの場合、負傷兵がが0か負傷兵が出た勝ちの二種類となります。条件式は二つでは無く複数もできます。各ボスモンスター(ノーマルモンスター)のパワーを基点としてこんな条件式が考えられます
- パワーの○○以上のパワーなら負傷兵0
- パワーが△以上○○未満なら負傷兵がでる(1-9%)
- パワーが△未満なら敗北
こんな条件式になります。プログラム的には凄い難しい条件式ではないです。例えばパワーを基点に80%あれば負傷兵0、30%以上80%未満なら負傷兵がでる。30%未満なら敗北
これは計算式をすることでどの条件に割り振れるかというのが可能です。こんな風ではないかな?ということです
あくまで一つの考えです
これが絶対というわけではなく、あくまで一つの考えとなります。↑が絶対正しいとはいえないです。実際にボスではなくノーマルモンスターでこんな実験をしました
- モンスター:レベル24狂気の剣闘士
- 将軍:ジョセフ・E・ジョンストン(1.5M)
- 兵士:レベル1騎兵/1人
レベル24のノーマルモンスターは強さ1Mのありません。そこで将軍と騎兵1だけでいったら敗北しました.
ノーマルモンスターとボスでは条件が違うのがあったり、実際にはもう少し複雑な事が起きているかもしれません。このあたりは正直わからないというのが答えになってくるかなと思います。エボニーが仕様を公開することはないと思うため
ボスモンスターとの戦いはこんな考えるもあるなーというぐらいであると良いかなと思いました
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS