新コンパス解析と大航海時代Onlineの船の向きの話

大航海時代Onlineは船の角度を2°刻みで変更することができます。
(少しづつ船の角度を変えながら調査した結果です。現状ほぼ間違いないと思っています)

この結果から512段階の角度解析から360段階の角度解析に変更し、
最終的に180段階の角度を求めるように調整されました。
360段階で角度を求めた後180段階に落とし込むことで、コンパス解析の誤差を吸収しています。

この調整により、以前のようにコンパスの線よりも少し下に到着するというような誤差はなくなり、
正確にコンパスの線が指す位置に到着できるようになりました。


大航海時代Onlineの船の向きまとめ
・船の角度は2°刻みで変更でき、1周180段階である
・船は0°(真北)に向くことができず、358°から右に少し角度を変えた場合は2°になる

テーマ : 大航海時代Online - ジャンル : オンラインゲーム

El Oriente 対応中

とりあえず地図を更新中です。
以下のような感じになります。

東に動いた日本と台湾


問題はkonozama食らってパケが届かなくて合ってるか確認しに行けないこと…
確認でき次第更新予定です。

テーマ : 大航海時代Online - ジャンル : オンラインゲーム

途切れた航路図の補完

現在航路図の補完を実装中です。
これまでの補完なしの場合の航路図を繋げるかどうかの判定は以下のものです。
・移動距離が地図座標(横約4800ドット)で7ドット以上移動した場合その位置を記録する
・記録した位置の距離が15ドット未満の場合線として繋ぐ

間隔が15ドット以上の場合線が繋げられず、航路図が途切れます。
途切れる主な原因としては以下のものです。
・大航海時代Onlineのウインドウになにか他のウインドウが重なっていて画像解析に失敗

今回間隔が15ドット以上でもできるだけ航路図を繋げるため、以下の条件を追加します。
・間隔が15ドット以上の場合、途切れる前の移動ベクトルと途切れた先の移動ベクトルを比べ、
 角度差が16度以内なら線として繋ぐ
・繋げる間隔の最大は2000ドットとする

補完なし

補完あり

上が補完なし、下が補完ありとなります。
角度差が16度を越える場合補完されませんが、途切れるのはほとんどの場合
まっすぐ走っている状態であるため、問題ないと思っています。
尚、補完するかどうかの指定を設定ダイアログに含める予定です。

テーマ : 大航海時代Online - ジャンル : オンラインゲーム

Ctrl+右クリックで出るメニューに項目追加

海域変動システムの手動設定がやりづらいという報告が結構きているので、
Ctrl+右クリックで出るメニューに項目を追加することにしました。
以下のような感じになります。

メニュー追加

これで大航海時代Onlineの入港許可地図を見ながら直観的に設定できるのではないかと思います。
尚、大航海時代Onlineのアップデートが近いため、公開はアップデート後になる予定です。

テーマ : 大航海時代Online - ジャンル : オンラインゲーム

更なるCPU使用率の低減と安定化

現状でもそれほどCPUに負担をかけない交易MAP C#ですが、
個人的に気になる点があるのでそれを修正しました。

気になる点は以下のものです。
・文字列の表示をDirectXのDXライブラリに丸投げのため、表示する文字数が多くなるとCPUを多く消費してしまう
・航路図の描画で画面外の描く必要のない線を多く描いてしまっている

航路図はバウンディングボックスを細かくすることで描画負荷を軽減することにしました。
バウンディングボックスを可視化すると以下のようになります。

バウンディングボックス


文字列の描画でネックはアイテムリストです。
以下のように変更しました。

アイテムリスト


パッと見違いがあまり分からないかもしれませんが、
DirectXとWindowsコントロールのハイブリッド描画となっています。
うまくその他の部分に溶け込むように配置できたかなと思います。
この部分を大きく変えたため、動作チェックに時間がかかってしまいました。