
移動ルーチンを作る
ここ2年近く、引きこもりな生活をつづけていたせいで、なんとなく浦島状態になりつつある。といってもすごいマニアックな浦島太郎な話だ。気づいたらWindows11というスキンとセキュリティ周りのテコ入れをした入れる意味があるんかなみたいなOSがリリースされるし、なにより驚いたのは、Ethernetの2.5Gbpsが結構こなれた値段になっていたことだ。今回ノートPCを買ったが、インターネットはWiFi、ローカルネットワークはEthernetという変則的な構成にしたかった。ところが最近のノートはRJ45の口をもたないので、USB-Etherのブリッジを買いに近くのPCパーツショップへ行った。普通に1Gbpsのものを買うかと思ったら、USBで2.5Gbpsに対応したブリッジが3000円くらいで売っていた。まあ、1Gbpsのものは1000円だったが、新しいほうが省電力だろうという勝手な推測で2.5Gbpsのほうを買ってきた。家に帰ってから、どのくらいかを調べてみたら2.5Gbpsのハブの5ポートのものが1万5000円くらい、NICは3000円くらいで買えることがわかった。すごいなちょっと前までハブは安くて5万円だったのに。とは言え、もう大枚はたいて10Gbpsの環境を整えたので今更感がすごい。結局ノートPCは1Gbpsでつないでいる。
e4にはいくつか自動的に設定された目的地に向かって移動を行う機能がある。ひとつは、自動自動戦闘で、設定された経路をグループ全体でまわり、途中でmobがいたら弓で引いて戦うというものだ。もうひとつは、最近e4に実装されたものだが、LDoNでPoKを起点に、指定されたキャンプまで移動して、ミッションをうけて、その後ダンジョンの中まで自動的に入ってくれるというものだ。前者の自動自動戦闘は、メインキャラが周囲にグループメンバーがきちんといるかどうかを定期的に調べて、いなければ止まってフォローさせるというやりかたをしているが、後者のLDoN自動ミッション受け機能は、グループメンバーの各々がミッションを受けるとき以外は同期をせず勝手に目的地に移動するやり方にしている。前者は、管理が簡単だが、ひっかかりやすく、全体の移動も遅い。後者は、基本的にメンバー同士の位置がわからなくなるが、ひっかかりにくく、他を気にしないので全体の移動も早い。
自動自動戦闘での移動の様子。メインキャラの後ろをほかの連中がフォローする感じになる。
理想は、LDoNやその他経験値キャンプをPoKでボタンをひとつ押せば勝手に移動して、その場で経験値を稼ぐなりミッションをクリアし、その後帰ってくるというものだ。いきなりそこまで作るのは非常に難しいが、段階をおって作っていってみようと思う。まずは、移動だ。
今e4はそれぞれの機能で、適当に移動ルーチンを作っている。ここをみな同じ機能を利用するようにしたい。
ひっかっかっているの図
移動の方針としては、いままでの複合でやろうと思う。まず、自分で勝手にレールと呼んでいるチェックポイントの列を作り、各キャラクターはまず近場の視線のとおったレールまで移動する。その後、それぞれがチェックポイントを移動するが、リーダーを越えて移動はしない。戦闘がはじまったらリーダーのいるチェックポイントまで移動する。戦闘が終了したら、リーダーのいるチェックポイントへ移動する。といった感じが基本的なルーチンだと思う。あとはこれに扉をあける、ひっかかったら前のチェックポイントへ移動、などを加えていけばいいと思う。まあ、この手のエラー処理が一番たいへんなんだけどね。ただ、現実世界と違ってこれの数がそれほど多くないので私みたいな素人プログラマでもつくれるのだと思う。
PoKでデバッグしているの図
PoKは移動ルーチンのチェックを行うにはいい場所だ。適度に起伏があり、適度にプレイヤーキャラクターが障害物となり、適度に扉があり、バフも消えない。怪しい動きをしてもだれも気にしないし目立たない。
そんなこんなで一応それなりに動くものはできた。まずは、自動自動戦闘をこの移動方法におきかえてみてバグの洗い出しを行おうと思う。