Giter Club home page Giter Club logo

mhw-simulator's Introduction

github pages

MHW:ICEBORNE スキルシミュ

「モンスターハンターワールド:アイスボーン」のスキルシミュレーター

概要

線形計画法を使用したスキルシミュレーターです。

アルゴリズムは下記を参考にし、実装しています。
http://nap.s3.xrea.com/lpsim-v3.pdf

開発

コードは GPLv3 ライセンスの元、公開しています。
イシューやプルリクをお待ちしています。

構成

  • Node.js / npm
  • TypeScript
  • React / Redux

実行

npm install
npm run dev

感謝

5ch スキルシミュレーター開発スレの皆様
翻訳サポート: mhvuze

mhw-simulator's People

Contributors

dependabot[bot] avatar imasanari avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

mhvuze yousuke-f

mhw-simulator's Issues

検討: シリーズスキルの検索見直し

現在、「心眼/弾導強化 Lv1」で検索した場合、装飾品の心眼珠【2】による発動のみの検索が行われるが、下記シリーズスキルによる発動も検索対象に入れるべきではないか。

  • 火竜の奥義 Lv4
  • 火竜の真髄 Lv3
  • 炎妃龍の恩寵 Lv4
  • 金獅子の怒気 Lv2

Cannot resolve dependencyエラーでビルドがこけてしまう

ご覧になられているか分かりませんがイシューさせて頂きます。
線形計画法に基づいて実装されているスキルシミュを分析させて頂きたく、このプロジェクトをローカルにclone後、
npm install, npm run devをした結果、ビルドでこけてしまうのでご助力頂きたく書き込ませて頂きました。

npm run dev後に出力されるログで目立って気になるのは以下の2項目で、
generateにて何らかの問題で必要なjsonファイルが生成されずにエラーとなっているようです。

> [email protected] scripts:generate I:\MyFiles\MyServer\Projects\mhw-simulator
> ts-node -P tsconfig.ts-node.json scripts/generate.ts

(node:14624) ExperimentalWarning: The fs.promises API is experimental
(node:14624) UnhandledPromiseRejectionWarning: TypeError: group.match is not a function or its return value is not iterable
    at fromEntries_1.default.txt.split.map.group (I:\MyFiles\MyServer\Projects\mhw-simulator\scripts\generate\armorGroup.ts:14:40)
    at Array.map (<anonymous>)
    at I:\MyFiles\MyServer\Projects\mhw-simulator\scripts\generate\armorGroup.ts:13:21
    at Generator.next (<anonymous>)
    at fulfilled (I:\MyFiles\MyServer\Projects\mhw-simulator\scripts\generate\armorGroup.ts:5:58)
(node:14624) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (
rejection id: 1)
(node:14624) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Server running at http://localhost:1234 
×  I:\MyFiles\MyServer\Projects\mhw-simulator\src\app\util\generatedUtil.ts:7:26: Cannot resolve dependency '~/generated/charm.json' at 'I:\MyFiles\MyServer\Projects\mhw-simulator\src\app\util\~\generated\charm.json'
    at Resolver.resolve (I:\MyFiles\MyServer\Projects\mhw-simulator\node_modules\parcel-bundler\src\Resolver.js:71:17)

初歩的な内容でしたら大変恐縮ではありますが、
何か気になる点があればご助言よろしくお願いいたします。

機能追加: 検索結果の複数表示

検索結果を複数表示するように修正する

線形計画法による検索は通常1パターンしか検索されない。しかし、そのパターンを除外する条件を追加してもう一度検索することで、2つ目、3つ目の結果を検索できる。

機能追加: 追加スキル検索

追加スキル検索の実装を行う

線形計画法を使用しているため、1スキルにつき、1回の検索でそのスキルの最大値が取得できる。ただし、上限解放できるスキルは極意系スキルとの兼ね合いで最大2回必要かも。

※従来の方法では、攻撃Lv1〜Lv7に最大7回のスキル検索が必要だった(二分探索を使えば回数は少し減らせる)

また、空きスロ数Lv1以上、Lv2以上、Lv3以上もそれぞれ1回ずつの検索で最大値が取得できる。空きスロ最大値検索3回 → 各スキル最大値検索(空きスロ+装飾品で発動できなかったスキルのみ)とすれば、かなりの高速化が見込める。

追加条件で空きスロットを入力した時の動作について

気になったのでissue作成しました。

下記のように入力したところ
空きスロットLV1: 1 空きスロットLV2: 0 空きスロットLV3: 1 空きスロットLV4: 0
検索結果に
空きスロットLV1: 0 空きスロットLV2: 0 空きスロットLV3: 1 空きスロットLV4: 0
の装備が検索されました。
私が入力した意図は、LV1: 1 LV3: 1で計2スロットが空いている装備を検索したかったのですが、恐らくLV3がLV1のスロットも装備出来るので、LV3: 1のみの結果が含まれていたと思います。
この結果は、仕様でしょうか?

以上、よろしくおねがいします。

変数の整数条件を変更し、検索の高速化を行う

装備カウンタ(頭〜足、護石は各1つずつ)について、変数の整数条件を外したところ、時間がかかっていた検索パターンが高速化した。

なお、装備カウンタは他の条件によって0か1かであることが保証されている。

  • 装備カウンタは0以上1以下
  • 装備カウンタは、装備名変数(整数制約あり)の値の合計である

変更による影響範囲を調査し、必要に応じて実装する。

TODO: 装備データを最新版にする

少なくとも以下の装備に対応していない

  • 守勢の護石Ⅲ
  • 転福の護石Ⅱ
  • 剛力の護石
  • 業物の護石
  • 封印の護石
  • 根性の護石

データ追加には、線形計画法の条件を編集しなければならないため、いったん保留(先に機能を優先させる)

追加スキル検索時、シリーズスキルの結果が反映されない

シリーズスキル発動可能な状態で追加スキル検索を行っても、そのシリーズスキルは発動しない扱いになる。

原因

「真・会心撃【属性】」で追加検索を行った時、結果のスキル一覧からそのスキルの発動ポイントを取得しているが、シリーズスキルの場合は「真・会心撃【属性】」ではなく「銀火竜の真髄」がスキル一覧にあるため。

スキル上限解放のスキルなしで、整備5や砲術5が検索される

下記より

497名も無きハンターHR7742019/09/23(月) 16:07:41.16ID:6ZoI8Wj3
>>496
おつです

簡易的なやつだから仕方ないですが
シリーズスキル関係がやっぱネックになりますね
特に極意が必要な整備5とか砲術5とかそこらへんがゾーク一式で引っかかって来てしまうあたり

シリーズスキルの部位数を対応するとかどうのこうのになったら
更に手を入れる必要が出ちゃうのが大変そう

【MHW】スキルシミュレーター開発Ver.13【MHXX】

スキル上限解放のスキルなしで整備5などを指定する場合は、以下のいずれかの対応が必要である

  • 自動的にスキル上限解放のスキルを含めて検索する
  • エラーまたは警告を表示する

除外装備設定の一覧にない装備がある

EXレックスロアなどの一部装備が装備設定の一覧にないため、以下の問題がある

  • 一覧からその装備を除外できない
  • 検索から除外した場合、もとに戻せない

挑戦者Lv7でEXレオンα、EXクレアαが検索されない

挑戦者Lv7を条件に指定しても、EXレオンα、EXクレアαが検索されない。
※上記防具は挑戦者・極意(サバイバーLv4)が発動する

挑戦者Lv7から展開されるスキルが現在の動作では砕竜の真髄のみのため、サバイバーによる挑戦者・極意が反映されていない。

サポート外ブラウザへの配慮

アクセスしたユーザにIEがいたため。全体の割合の2%とはいえ、配慮が必要。

※現状、IEの場合は何も表示されない(画面真っ白)

属性耐性値の表示

属性耐性の検索ができるが、検索結果に数値が表示されないので確認できず不便

検索結果の装飾品をソートしてほしい

検索結果に表示される装飾品が、下記のようにサイズ順でないので、サイズ順にソートしたい

耐裂珠【1】 x3
痛撃珠【2】 x2
体力珠【1】 x2
貫通珠【3】 x2
心眼珠【2】 x1
鉄壁珠Ⅱ【4】 x1
投石・解放珠【4】 x2
鉄壁・解放珠【4】 x1
超心・体力珠【4】 x1

ストーリー進行度に合わせた防具の除外を行いたい

#69 (comment) より

2.別途、進行度に合わせた除外をしやすくする対応を行う
例)検索ボタンの隣、または除外ポップアップのフィルターの隣などに進行度(下位、上位、マスター、もしくは★1、★2、★3…)を置く

  • 検索ボタンの隣の場合は、防具設定の除外があるのに検索ボタン側にもフィルタのような機能があると使用者が混乱しないかな?と思いました。
  • 除外ポップアップのフィルターの隣などに進行度(下位、上位、マスター、もしくは★1、★2、★3…)の場合は、除外ポップアップが防具設定モーダルを示すのであれば、テキストボックスの右ないしは下に進行度(下位、上位、マスター、もしくは★1、★2、★3…)があると便利だと感じます。
  • 進行度(下位、上位、マスター、もしくは★1、★2、★3…)についてはレア度(+できるならイベントなどグループ化できるデータ)でもいいと思っています。

位置については要検討

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.