/Sync-teyvat-map

Primary LanguageTypeScriptMIT LicenseMIT

はじめに

初めまして、Rollphesと言う者です。普段は原神で遊びまくってるただの社会人ニ年目です。
このレポジトリはテイワットマップを自動でゲームと追尾させたいと思い2022/2に作った物になります。
プログラミングは趣味でやってるだけで独学なので説明やコードに不備があるかと思いますが見なかったことにしてくださいw
GPUを使ってないのもそのせいです(ただの勉強不足)w
もし問題点等あればissue等を用いて頂ければ幸いです。
もちろんTwitter(ユーザー名とID一緒です)やDiscordでも対応できます。

動作環境

・windows CPU:i7以上(負荷は大体原神の半分程度です)
・Chrome
・ディスプレイの比率が16:9(16:10でも恐らく動く)
・原神をフルスクリーンでプレイしている事
・原神をメインディスプレイでプレイしている事
・原神をキーボードとマウスでプレイしている事(コントローラーを使用した場合UIの場所がズレる為)
※1:自分の環境はこれなので別バージョンでの動作は保証しません。
※2:実行時のメモリ消費量は約600MBです。

導入方法

Releasesから最新バージョンをインストールするだけです。
最新バージョンはコチラ

注意:WindowsによってPCが保護されましたという警告が出ます。詳細情報をクリックすれば実行ボタンが出てきますのでそちらから実行ください。
Q:なんでこんなものが出てくるの?
A:コード証明をしてないからです。詳しい話はしませんが費用がかかる為、署名していません。
image

尚、新バージョンが出た場合は自動で更新されます。

実行方法

起動するだけです。

仕組み(如何せん10ヶ月前のコードなのでほぼ忘れてます。)

1.スクリーンショットをt.pngとして保管
2.datとして保管してあるマップデータ(setupスクリプト内でAKAZE特徴量と特徴記述を保管した者)とマッチング
3.精度を高めるためマッチングした結果のソートを実施
4.特にマッチング距離が短かった40setを抽出
5.角度違いを考え、更にマッチングを実施
6.抽出した2つのマッチングからベクトルを取り出し、テイワットマップの原点からのベクトルを算出
7.WebSocketを用いてローカル通信でChromeに送信
8.拡張機能が受信してURLのパラメータ部分を書き換える。
9.パラメータを書き換えた事によりテイワットマップが動く

開発者向け

動作を軽くするために拡張子dat内にjson形式でKeyPointsとDescriptorsを保管しています。
もしマップが拡張された際に自分でマップ画像img/???.pngを弄って更新したい場合はcreate-dataスクリプトを実行してください。
32GBメモリを実装しているPCでもほぼ全部持ってかれるので注意してください。
尚、事前にsetupを実行した物を保管しているので更新しなくても動きます。