物品導航與即時檢測

返回:文件索引 / README

概述

本文覆蓋兩個觸發式/除錯類任務:

  • 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 是官方地圖同步的賬號憑證,需要自己從瀏覽器裡取一次。步驟:

  1. 開啟瀏覽器,按 F12 開啟開發者工具。
  2. 訪問 https://game.skland.com/map/endfield 並登入。
  3. 切到 「網路 / Network」 標籤,在篩選框裡輸入 https://web-api.skland.com/account/info/hg/check。
  4. 在篩選後的請求列表裡選中該請求,從 「響應 / Response」 中取 data.content 的值 (是一長串字串)。
  5. 把該值填入全域性「導航配置」的「真值content」;或填入賬號配置頁後, 在「導航配置」中用「真值地圖賬號」選擇該賬號。

兩種填法二選一即可:直接填全域性「真值content」適合臨時用一次;存到賬號配置頁適合多賬號長期使用。 content 等同於登入態,不要貼到 issue、聊天群或截圖裡。

本地 WebSocket(油猴指令碼)

未配置 content 時,可以使用瀏覽器油猴指令碼向程式轉發位置:

  1. 安裝瀏覽器擴充套件 Tampermonkey(油猴)。
  2. 點選任務配置中的「油猴指令碼幫助」按鈕,開啟官網說明並定位到指令碼檔案;將 assets/scripts/endfield-ws-position-relay.user.js 匯入 Tampermonkey 並啟用。
  3. 訪問 https://game.skland.com/map/endfield 並登入,確認指令碼允許在該網址執行。
  4. 清空任務 content,並取消/清空「地圖賬號」,確保任務沒有取得官方地圖憑證。
  5. 在「選擇物品」中勾選目標,啟動物品導航任務。程式監聽 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 客戶端實現 / 賬號配置使用者指南

在 GitHub 查看來源 ↗ · 頁面產生時間: 2026年10月23日