FF14 暁月パッチでテレポ代が増えそうという話が出てきています。
その暁月パッチに向けて、テレポ代最適化ツール「シャーレタイム」を作ろうとしています。
前回の記事はこちらです。
今回は経過報告です。
何が出来上がったか
現在の進捗状況を別URLで公開、チェックできるようにしました。
いわばα版です。
https://gelehrtecrest.github.io/shalatime/20211005.html
タブなどで各地のエーテライトの設定を開けるようにしました
地道な作業でしたが、UIをある程度整えました。
漆黒時点での、私が確認できる範囲内でのエーテライトの場所への出発・到着・通過の設定ができるようにし、
また、ホームポイントや半額・無料エーテライトの設定ができるようにしました。
設定を保存できるように
localStrageという機能を使い、チェックボックスやラジオボックスに入れた設定を保存できるようにしました。
スマホ対応
対応しました
各地のエーテライトにidを振分って、プログラム的に解読しやすいように
上記のことをやりやすくするために、スプレッドシートの方で各地のエーテライトに対してidを振りました。
これも地道な作業でした。
ご興味のある方はスプレッドシートの「id」のシートをご参照ください。
docs.google.com
これからどうするか
本番のURLと今回のURLと開発環境のURLを分ける
これは内部的な問題なのですが、スプレッドシートのファイルcsvを自分のPC上でJavaScriptで読み込もうとするとエラーが出ます。
詳しくはこちらのサイトなどをご参照ください。
【Ajax】ローカルファイルを読み込もうとしたらCORSエラーが発生したので解決した - Qiita
自宅PCにローカルサーバーを立てれば問題ないのですが、それはそれで面倒なので、GitHub上の公開サーバーで開発作業も続けようかなと思います。
そこでURLを分けます。
今回までに出来上がった部分の隔離保存
https://gelehrtecrest.github.io/shalatime/20211005.html
こうやって日付でバージョン管理するのは色々とプログラマーとして失格な気もしますが、気にしない方向で行きます!
実際にテレポ代を計算する部分を作る
これは何段階かに分けて行おうと思います
2点間のテレポ代の計算を、割引・寄り道考えないで行う
これは素早くできると思います。
2点間のテレポ代の計算を、居住区・ゴールドソーサーへの寄り道を考えて行う
例えばクリスタリウムからリムサにテレポする場合、一度ミストヴィレッジにテレポしてリムサにテレポするほうが安かったりします。
なので2点間のテレポを行う場合、居住区・ゴールドソーサーへの寄り道テレポを考えて、金額の比較を行う必要があります。
2点間のテレポ代の計算を、居住区の設定に応じて計算しないようにする
上記で居住区に寄り道した方が安くなる例を出しましたが、もちろんミストヴィレッジに家やアパルトメント、フレンドテレポできない人もいるかと思います。
設定に応じてそのルートを省く処理を行う必要があるので、それに合わせて計算をします。
2点間のテレポ代の計算を、デジョンするルートを含めて計算できるようにする
クリスタリウムからデジョンしてサマーフォード庄に飛べる人もいるかと思います。
その場合クリスタリウム→サマーフォード庄→リムサが最安ルートになるので、それを考慮して計算を行います。
それらを踏まえて、複数箇所寄り道した場合の最安ルートを計算する
ここからは巡回セールスマン問題になりますが、2点間の最安ルートを求められた状態なので、動的計画法で計算していきたいと思います。
また、デジョンは1回だけしかできない設定にしたいと思いますので、最安ルートの計算方法も少し考慮する必要が出てくるかと思います。
まだまだ先は長いですね。
皆様へのお願い
ひとまず、本番環境もしくは隔離保存のURLで、実際にUIが動くかどうか、設定が保存されるかどうかなどのチェックをしていただけると嬉しいです。
あくまでもα版だということを認識していただけると幸いです。
https://gelehrtecrest.github.io/shalatime/20211005.html
まだまだ先の長いお話になりますが、お付き合いいただければ幸いです。