見出し画像

機械に任せる

うーん、最初のどうでもいい日記部分で書くことがないな。いまさらだが、今年の目標として、新しいプログラミング言語を使いこなせるようになりたいとおもっている。私はプログラミングは完全に趣味のレベルで、今までいろいろな言語をかじってきたが、まともに使いこなすというレベルに到達したことがなかった。そういう意味だと、Macroquest2の謎言語が、人様に胸をはって使いこなしているといえる言語だと言える。これのおかげでgitを使うようにもなったし、いままではは適当に書きなぐってはそのままで、数ヶ月たつとなんだかわからなくなったものばかりだったが、きちんとドキュメントに残すようにもできた。ただ、いまだに名前がわからない言語を使いこなせていることを胸をはってと言ってもいまいちだとは思う。
せっかくなので、この体験を広げて、もっと世の中で一般的に使われているまともな、きちんとメンテされているプログラミング言語を勉強しようかなと思っている。今考えているのは、PythonとRustだ。Pythonはちょっと触ってみたところ非常にとっつきやすくわかりやすい。Rustはさすがにc++の後釜を狙っているだけあって細かい。まずはPythonあたりから使ってみて、段階的にRustのほうに移行しようかなと思っている。

今日もクラス構成に関して考えていきたい。なんかここ数週間、というかもう2年以上ずうっと同じようなことを書いているが、結局このゲームの肝はここだと思う。ロマンシングサガは最終的にexcelで遊べるように、Everquestも最終的に妄想するだけで遊ぶことができる。
昨日構成に悩んでいたが、おもいきって最適な構成を条件からサジェストするプログラムを作るのがいいのではないかと思ってきた。早速だがPythonで簡単に書いてみた。

入門書片手に適当に書く

なぜかMQ2の謎言語だと堂々と見せられるのにPythonだとスクリーンショットを貼るのが恥ずかしい。まだ習いたてだからか。いまいち使い方がわかっていない気がする。流れとしては、各クラスにDPSやヒール、AEのDPSなど得点をつけて、全てのグループの組み合わせで高い得点をもつものをリストにするというものだ。普通だな。ちなみにグループの組み合わせは、重複を入れて、16の6乗通りある。16M通りだ。早速実行してみよう。まずは、DPSは19k以上、ヒール能力は純ヒーラー二人相当分、足早あり、GGあり、タンクは最低一人という組み合わせだ。

1/16くらい終わったところでもう1600通りくらいある。あと、私のコードの作りが悪いのか、Pythonがそもそも遅いのか、めちゃくちゃ遅い。まあ、重複のチェックをしているので、進めば進むほど遅くはなっていく。

結果の例

ちょっと条件があまかったな。もっと最低DPSをあげて、ついでに絶対に入れたいクラスを設定できるようにしよう。WARとCLRを必須にしてDPSをもうちょっとあげてみよう。

一気に59まで絞られた。よしよし期待した機能を提供しはじめているな。一応デバッグが済んだので、実際に使ってみよう。条件は以下でためしてみた。

必須クラス: WAR, CLR, PAL
最低DPS: 25k、最低ヒール能力: 純ヒーラ2.5人分、マナ回復: BST一人分相当
足早: 有、GG: 有

結果は、件数1

なるほど。これは思いつかなかった。マナの回復量はBRDとNECで十分あり、ヒールもCLRに、サブヒーラとしてのPALとNECでカバーする。通常のDPSだけでなく、AEのDPSもWARとPALがFESを持つことでWIZと合わせてかなりでると思われる。
次は、PALでMTが張れるような構成を作ってみよう。

必須クラス: PAL, CLR
最低DPS: 30k、最低ヒール: 純ヒーラ3人分、マナ回復:BST1.5人分
足早:有り、GG:なし

結果は16件。このうち、評価値の高いのを並べると、

なんかPAL CLR BRD RNG BST WIZかPAL CLR BRD BST WIZ NECの構成がよさそうだと言っている。なかなかうまく行っているな。ただ、今の得点の付け方だと、メレー職はほとんど選択されない。今DPS職は一律10k出すと設定しているからだ。そうなるとユーティリティの多いキャスターが選択されやすい。また最近のMNKやROGがどのくらいDPSを出すのかがわからない。いずれにしろその二職はいくらDPSをだせてもAE攻撃がないのでグループキャンプではいまいちなのだが。他にもBRDやSHM、ENCなどの他者を強化するバフをもつクラスを得点に加味できていない。実際のところこれを数値化するのはとてもむずかしい。だが、この辺をたぶんもうちょっと最適化しないといけないのかもしれない。まあでもそれはともかくとして、明日はこのツールを使って構成をもう少し深堀りしたい。

この記事が気に入ったらサポートをしてみませんか?