Idleonの歯車位置を最適化したい
こんにちは。
最近はもっぱらIdleon放置MMOを放置しています。
ゲームについてはあんまり説明しないのですが、W3の要素として、生成した歯車(この時点で謎)を配置して建設のbuild rateなど諸々のパラメータを上昇させるものがあります。
ゲームをやった人ならわかりますが、これがなかなか奥深い。
隣にある歯車のステータスをあげる歯車などもあり、これを考え出すと組み合わせが膨大に。
誰もが考えることは、
歯車位置を最適にしたい
できれば自動で
と思ったらすでに遺伝的アルゴリズムで実装している人がいました(2年前)。
名前はCogstruction(日本語にするなら歯め合わせとか?)。
いいセンスだ…
温めていたアイデアはすでに誰かが実装済みだったかぁと悲しくなる反面、どうやらpythonでコマンドラインから動かしているとのこと。
なるほど。
pythonユーザならいざ知らず、「プログラムに親しくない人がpythonのインストールから実行するのはかなり辛いかもしれない、しかもコマンドラインから」と思いました。
ですので、
pythonインストール不要で動作するものを作りました。
githubとかよくわかんないZE!!
っていう方は以下のリンクからダウンロードしてくださいませ。
クロームに怒られるという方は、面倒かもしれませんがGithubのBuild内にあるEXEfile.zipをダウンロードしてみてください。
なお本データはGPLなので、動作等は自己責任となります。
ご容赦ください。
Windows11で動作することは個人の環境で確認しています。
ここからは動作説明
適当なところにダウンロードしたZipを解凍、何かフォルダに入れておいた方が良いです。
起動してみましょう。
起動するまで少しかかりますが、画面はこんな感じ。
ボタンがいろいろありますが、とりあえずはあせらず。
まずはブラウザでIdleon Toolboxへログイン。
ログインしたらW3のConstructionのページへ。
ブラウザ画面が小さい人は、左のハンバーガーアイコン(三みたいなの)から「ACCOUNT」を押して、さらにハンバーガアイコンの「W3>Construction」からアクセスできます。
あるいは、起動画面のここをクリック(ログインしていればConstructionへの直リンクになる)。
あれ?っと思って連打すると大量にページが開くので注意。
次に、必要なデータ取得。
Webブラウザ上で「Cogstruction Data」と「Cogstruction Empties」の2つをそれぞれアプリケーションのテキストボックスに入れる。
ブラウザの方は、クリックするとクリップボードにコピーされるのでCtr+Vで貼り付け。
それぞれを貼り付けた後、テキストボックス下部にある「Write COG」そして「Write EMP」を押す。
データさえ入っていれば、ファイルが生成されます。
これで必要なテキストファイル(CSV)が作成される。
このファイルの中身がないと計算が実行できないので注意(空データだと落ちる)。
よくある間違いとして、テキストの先頭にスペースが入っていたり、変に改行してしまうなどがあるので、生データをそのまま貼り付けるように注意してほしい。
Ctr+A > Del > Ctr+Vが安定です。
ここからはGUI作成にあたって追加した機能で、盤内に配置するキャラクタを選択できます。
画面上の「推し」ボタンを押してください(他意はない)。
しなくても計算はできますが、歯車生成にあたっているキャラも盤内に配置されて計算されてしまいます。
キャラ名は私のゲームのものですが、実際には各ユーザの名前が出てくるはずです。
ちなみに、盤内に配置していないキャラはチェックが外れた状態で表示されると思います。
チェックを入れなかったキャラクタは、盤内に配置されないようになります。
そう、あなたが推していないキャラは、このステージに立たないのです(真意もない)。
「推し」ボタンを押さない、あるいは全員推してチェックをつけると全キャラ配置されます。
注意点として、元々配置しているキャラクタも除外することが可能ですが、その場合インベに余っている歯車がないと計算ができないつくりになっています。
その後、「押忍」ボタンで配置の計算を実行します。
計算には時間がかかりますので、リラックスしてしばらくお待ちください。
進捗はprogress barに表示されますが、途中で終了して一気に進むことがあります(最大の世代数を最大値に設定しているため、途中で打ち切りがあると一気に終わる)。
完了すると、表示されているディレクトリに `output.txt` が生成されます。
このデータの歯車情報を元に並び替えると、パラメータがGUI右下の枠の中にある数値になります。
なお、保存先のディレクトリ名が長いと画面が横に長く伸びてしまいますのでご注意ください。
括弧()内に今の配置から比較した、各数値の上昇幅を記載しております。
今の画面だと、元々の配置からBuild rate+2.2k、Flaggy rate-13、経験値ボーナスは変更なしです。
並び替えの費用対効果としてご参考にお願いいたします(並び替えは手動なので、1時間くらいかかると思います)。
なお、必ずしもすべてのステータスが上昇するものではありません。
ビルドレート>フラグレート>>経験値ボーナスの順に重み付けされています。
生成されたテキストの中に、元々配置してあった(X、Y)座標(Pre-Coords)を追記しています。左下角が(0,0)です。
左がX、右がY座標です。
歯車生成にあたっているキャラクタ、配置していない歯車は、歯車生成にあたっているキャラ左から右、そしてインベの歯車の左上から右の順にspare#0,1,2…とナンバリングされます。
もし歯車を新しく追加したり、再計算をしたい場合には、データ取得から繰り返してください。
なお、Toolboxのデータ更新は、キャラクタ変更、あるいはクラウドセーブの際です。
データ更新をした後の推しキャラ選択も忘れずに。
並べ替え手順について
これが非常に困難ですが、並べ替えに関するTipsを紹介します。
まず、出力された `output.txt` の下の方にあるSpare Cogを探します。
このスペアは、このプログラムで検討した配置では使用しない歯車ですので、このスペアの中で、元々盤内に配してあった(Pre-Coordがspare#~でない)歯車を探し、まずそれらをすべて取り除きます。
すると盤内に空いたスペースができますので、その座標にどんどんと歯車を追加して順次繰り返していけば、混乱なく並べ替えができるはずです。
それでも時間がかかるのはご愛嬌。
この並べ替えが手間なので、修正の余地があります。
並べ替え支援のGUIを作っても良いかもしませんが、今は思うだけにしています。
ボードをマス目でつくって、クリックして交換済み、未交換、入れ替え先を表示する、入れ替え手順書をつくる、などなど。
それでは素敵な歯車ライフを。
この記事が気に入ったらサポートをしてみませんか?