物品導航與即時檢測
概述
本文覆蓋兩個觸發式/除錯類任務:
ItemNavigatorTask(介面名稱:物品導航):指向所選物品的最近採集點,並支援按鍵標記已獲取。已有配置預設沿用 master 的本地 WS / 官方地圖客戶端邏輯;只有顯式選擇「統一定位」時才讀取共享world.pose。RealtimeDetectTask(介面名稱:即時檢測):迴圈執行 YOLO 檢測,用於線上觀察模型、目標類別和置信度表現。
物品導航
使用前提
- 「舊版相容」會直接啟動本任務的官方地圖客戶端或本地 WS 服務;舊配置中的
content/地图账号會先遷移到全域性「導航配置」後繼續使用。 - 「統一定位」推薦在全域性「導航配置」中填寫「真值content」,或儲存賬號配置後用「真值地圖賬號」選擇;未配置官方真值時使用本地
ws://127.0.0.1:3001。 - 「統一定位」會在首次讀取座標時按需啟動應用級定位服務;「舊版相容」不會觸碰該服務。
- 物品點位資料來自
assets/items/map/summary.json和assets/items/map/item_names.json。 - 標記結果寫入
configs/marked_points.json,用於避免重複指向已經標記的點位。
配置項
| 配置項 | 預設值 | 說明 |
|---|---|---|
定位实现 |
旧版兼容 |
旧版兼容 沿用原有 WS / 官方地圖客戶端;统一定位 使用應用級定位服務和全域性「導航配置」。 |
选择物品 |
[] |
參與導航的物品名稱列表;為空時不會篩選出目標。 |
标记按键 |
f |
接近目標後用於標記“已獲取”的按鍵。 |
标记按住时长 |
2.0 |
連續按住標記鍵的秒數。進入水平距離 20 以內才開始計時,達到該時長即標記為已獲取。填 0、負數或非數字會回退為預設 2 秒。 |
浮层信息 |
開 | 在浮層上顯示當前指向目標的物品名、距離、方位與高度。關閉後浮層只保留箭頭。 |
浮层文字透明度 |
92 |
浮層文字的透明度,取值 0-100(0 完全透明,100 完全不透明)。僅在 浮层信息 開啟時顯示。 |
浮层背景透明度 |
59 |
浮層文字黑色底板的透明度,取值 0-100(0 表示不繪製底板)。僅在 浮层信息 開啟時顯示。 |
浮层字号 |
26 |
浮層文字字號,按 1080p 視窗高度為基準的畫素值,會隨視窗高度等比縮放。僅在 浮层信息 開啟時顯示。 |
透明度與字號每輪讀取,改動後在 UI 中即時生效,無需重啟任務。
浮层文字透明度/浮层背景透明度/浮层字号三項在浮层信息關閉時會被隱藏。
獲取 content
content 是官方地圖同步的賬號憑證,需要自己從瀏覽器裡取一次。步驟:
- 開啟瀏覽器,按
F12開啟開發者工具。 - 訪問 https://game.skland.com/map/endfield 並登入。
- 切到 「網路 / Network」 標籤,在篩選框裡輸入
https://web-api.skland.com/account/info/hg/check。 - 在篩選後的請求列表裡選中該請求,從 「響應 / Response」 中取
data.content的值 (是一長串字串)。 - 把該值填入全域性「導航配置」的「真值content」;或填入賬號配置頁後, 在「導航配置」中用「真值地圖賬號」選擇該賬號。
兩種填法二選一即可:直接填全域性「真值content」適合臨時用一次;存到賬號配置頁適合多賬號長期使用。
content等同於登入態,不要貼到 issue、聊天群或截圖裡。
本地 WebSocket(油猴指令碼)
未配置 content 時,可以使用瀏覽器油猴指令碼向程式轉發位置:
- 安裝瀏覽器擴充套件 Tampermonkey(油猴)。
- 點選任務配置中的「油猴指令碼幫助」按鈕,開啟官網說明並定位到指令碼檔案;將
assets/scripts/endfield-ws-position-relay.user.js匯入 Tampermonkey 並啟用。 - 訪問 https://game.skland.com/map/endfield 並登入,確認指令碼允許在該網址執行。
- 清空任務
content,並取消/清空「地圖賬號」,確保任務沒有取得官方地圖憑證。 - 在「選擇物品」中勾選目標,啟動物品導航任務。程式監聽
ws://127.0.0.1:3001, 指令碼連線成功後會轉發網頁地圖的位置資料。
如果沒有位置資料,檢查本機防火牆是否攔截
3001埠,以及 Tampermonkey 是否允許指令碼在目標網址執行。
資料流(統一定位)
flowchart TD
A[全局真值content / 真值地图账号] --> D{是否有官方真值}
B[本地 WS 端口 3001] --> C[WorldPoseService 唯一生产者]
D -->|有| E[官方地图 WS]
D -->|无| B
E --> C
C --> F[RuntimeStateHub: world.pose]
F --> G[物品导航读取 x/y/z/map_id]
G --> H[查询 assets/items/map 数据]
H --> I[绘制方向箭头与目标信息文字]
I --> J[按住标记键写入 configs/marked_points.json]
注意事項
- 物品導航依賴當前地圖 ID 與座標資料,點位資料缺失時不會產生有效指向。
- 任務會在視窗上繪製方向箭頭;若看不到箭頭,先確認 WebSocket 位置資料是否正常。
- 浮層在方向箭頭下方直接顯示當前指向的物品名、水平距離、八方位(北、東北、東、東南、南、西南、西、西北)與上下高度;方位與箭頭朝向共用同一座標系,兩者始終一致。附近目標的小箭頭以長度表示高差(同高最短、高差越大越長),箭頭朝上表示目標在玩家上方。文字塊停止重新整理 2 秒後自動消失。
- 文字塊的縱向位置會跟隨「附近目標」黃色標記雲團的原始畫素半徑下移,因此在 1024×576 到 2560×1440 等各解析度下都與雲團保持約 16px 間隙,不會被標記壓住。
- 關閉
浮层信息後浮層只保留箭頭,並且會立即清掉已顯示的文字。headless(無 Qt)模式下浮層沒有逐畫素透明度:浮层背景透明度為0時不繪製底板,大於0時按該值把底板色向中性色混合,近似半透明觀感。 - 「統一定位」的“本地 WS 回退”只發生在全域性導航配置沒有取得官方
content時。若已配置官方真值但鑑權或連線失敗,當前執行不會自動改用本地 WS;應清空全域性「真值content」和「真值地圖賬號」後再使用本地模式。 - 標記需要在目標水平距離 20 內連續按住標記鍵達到「標記按住時長」(預設 2 秒);中途松鍵或離開範圍會取消本次計時。該配置每輪讀取,改動後無需重啟任務。
- 油猴指令碼幫助按鈕會開啟官網物品導航使用說明和指令碼目錄。
即時檢測
使用場景
即時檢測用於除錯 YOLO 模型,不是面向日常自動化流程的任務。它會持續截圖並執行目標檢測,便於觀察某個模型和目標類別的命中情況。
配置項
| 配置項 | 預設值 | 說明 |
|---|---|---|
YOLO模型 |
src/config.py 中 yolo.default_model |
模型配置鍵,實際模型和標籤維護在 src/yolo/models.py。 |
检测目标 |
當前模型 labels 的第一個目標 | 要觀察的目標類別。 |
检测置信度 |
0.7 |
取值範圍 0 到 1,值越高越嚴格。 |
扫描间隔(秒) |
0.2 |
每次檢測後的等待時間。 |
注意事項
- 目標名稱必須存在於所選模型的 labels 中,否則任務會直接報錯。
- 該任務會迴圈執行,停止時會輸出總掃描次數、命中輪次和最高置信度。
相關文件:地圖官方 WS 客戶端實現 / 賬號配置使用者指南