工程趣聞 2026 年 6 月 21 日

2026-06-21 雜談:Bevy 0.19 遊戲引擎、SMPTE 標準免費開放與 SRE 研究公開信

Rust 遊戲引擎 Bevy 0.19 出爐:場景系統大翻新…

Rust 遊戲引擎 Bevy 0.19 出爐:場景系統大翻新、GPU 加速渲染效能倍增

Bevy Engine · 2026-06-19

開源 Rust 遊戲引擎 Bevy 在 2026 年 6 月 19 日發布了 0.19 版本,這是迄今為止規模最大的一次更新之一,共有 261 位貢獻者合併了 1,185 個 Pull Request。本次更新橫跨場景系統、渲染管線、UI 框架與開發者工具,幾乎涉及引擎的每個核心模組。

BSN:用 Rust 巨集重新定義場景描述

本次最受矚目的功能是全新的場景系統 BSN(Bevy Scene Notation)。過去開發者需要手動組合 Bundle 來生成實體(Entity),步驟繁瑣且難以複用。bsn! 巨集讓開發者能夠直接在 Rust 程式碼中描述場景結構,同時支援未來的資源檔案格式。

新場景系統具備三個關鍵特性:可組合(composable)、可覆蓋(patchable)、具備依賴追蹤(dependency-aware)。這意味著複雜的物件樹狀結構可以拆成小塊獨立定義後再組裝,而不必在一個巨大的函式裡逐一建立每個子實體。對於需要頻繁調整場景佈局的遊戲開發者而言,這是生產力的實質提升。

渲染效能:GPU 批次解包讓幀時間砍半

渲染效能改善是 0.19 的另一個亮點。官方測試中,many_cubes 範例的幀時間從 49.47ms 大幅降至 18.77ms(開啟視錐剔除後),接近三倍的效能提升。模擬城市場景 bevy_city 在渲染 55,000 個實體時,幀時間從 19.3ms 降至 11.8ms。

這些改善來自多項底層優化:GPU-based batch unpacking(GPU 端批次解包)、稀疏網格 Uniform 上傳(sparse mesh uniform uploads),以及 GPU 光源叢集化(GPU light clustering)。渲染圖(Render Graph)架構也整體遷移至 ECS 排程系統,讓自訂渲染程式碼的撰寫門檻大幅降低。此外,資源(Resource)現在以 ECS 中的單例元件形式存在,可直接接受 Observer、Hook 與 Relationship,統一了引擎的內部機制。

圖形效果:接觸陰影、螢幕空間反射與矩形區域光

本次更新引入了多項視覺效果。接觸陰影(Contact Shadows) 補足了傳統陰影映射在近距離物體上的細節不足,使地面物件的陰影看起來更自然紮實。物理基礎螢幕空間反射(Physically-based screen space reflections)則為光亮材質提供更精確的環境倒影。

Linearly Transformed Cosines 技術實現了矩形區域光(Rectangular Area Lights),常見於室內日光燈管或窗戶的漫反射效果。視差校正立方體貼圖(Parallax-corrected cubemaps)改善了室內場景的間接反射準確度。後製效果方面則新增了暈影(Vignette)與鏡頭畸變(Lens Distortion),讓畫面更容易調出電影感。

UI 系統:文字輸入與豐富文字排版

UI 框架方面,0.19 正式引入 EditableText 元件,支援具備 Unicode 感知的游標導航與文字編輯,這意味著開發者終於可以在 Bevy 原生 UI 中做出完整的文字輸入框,不需要依賴第三方套件。Feathers 小工具庫也大幅擴充,新增了下拉選單、折疊切換、清單視圖與捲軸等常見元件。

富文字(Rich Text)功能同步強化,支援可變字型屬性(variable font properties)、響應式字型大小與字元間距(letter spacing)。這讓遊戲內 HUD、對話框與 UI 動畫的排版彈性大幅提升,無需再仰賴外部文字渲染庫。

開發者工具與錯誤恢復

開發工具方面,0.19 新增了互動式變換 Gizmo(Interactive Transform Gizmo),讓開發者可以在執行時直接拖拉物件位置與旋轉,無需重新編譯。無限網格渲染(Infinite Grid) 與診斷疊加(Diagnostics Overlay)則讓場景除錯更加直觀。文字 Gizmo 可以在 3D 空間中直接標注除錯訊息。

穩定性方面,GPU 渲染錯誤恢復機制(Render Error Recovery)現在能優雅地處理 GPU 失敗情境,而非直接崩潰退出。Web 端的任務取消(Web Task Cancellation)問題也在此版本中修復,讓 Bevy 在 WASM 目標平台上的行為更加可靠。

原始來源:Bevy 0.19 Release Notes


110 年的媒體技術標準全面免費:SMPTE 開放整座標準圖書館

SMPTE · 2026-06-17

專業影視技術標準組織 SMPTE(Society of Motion Picture and Television Engineers)於 2026 年 6 月 17 日宣布,將其整座標準圖書館對全球公眾完全免費開放,涵蓋超過 110 年的技術文件積累。這座圖書館現已可透過 pub.smpte.org/doc/ 不受限制地存取,所有已發布的標準與未來的新發布文件均在其列。

SMPTE 是什麼,它的標準為何重要?

SMPTE 成立於 1916 年,是制定電影與電視技術規範的核心機構,其標準滲透在現代媒體製作流程的每個環節。從 35mm 底片規格到 12G-SDI 數位介面,從 MXF 容器格式到 D-Cinema 數位放映包裝,幾乎所有廣播、串流、電影院與後製設備的互通性都仰賴 SMPTE 標準。

標準庫的分類涵蓋多個技術域:ST(Standard,核心技術規範)、EG(Engineering Guideline,工程指引)、RP(Recommended Practice,最佳實踐)、RDD(Registered Disclosure Document,廠商自願揭露的專屬技術規格)與 OV(Overview,文件組套概覽)。這些文件群組涵蓋從類比時代的磁帶格式到當代 IP 工作流程的 ST 2110 系列,橫跨廣播電視超過一個世紀的技術演進。

為什麼之前要收費?開放之後能帶來什麼?

SMPTE 標準過去需要付費購買,對個人開發者、學術研究者與新興市場的從業者而言是一道隱性門檻。ST 2110(IP 媒體傳輸標準)為例,全系列文件的購買費用過去可能超過數百美元,這讓想要自行實作相容設備的工程師往往只能依賴二手摘要或廠商文件。

SMPTE 主席 Rich Welsh 在公告中表示:「互通性是媒體未來的核心。現在是開放大門的時刻,確保下一代媒體技術建立在更堅實、更易取得的基礎之上。」此次開放的推動者包括標準副主席 Raymond Yeung 與標準總監 Steve LLamb,並獲得 Amazon AWS、Apple、Disney、Sony 等鑽石級企業會員的支持。

對軟體工程師與開放源碼社群的實際意義

對於開發媒體相關工具的工程師而言,這是一個相當重要的轉變。過去要實作 MXF(Material Exchange Format)或 IMF(Interoperable Master Format)等格式時,往往需要仰賴現有開源實作(如 OpenAssetIO、MXFLib)來反向推測規格,因為正式標準文件付費門檻阻止了大多數個人開發者直接閱讀原文。

現在,任何工程師都可以直接查閱 SMPTE 官方規範,確認自己的實作是否符合標準,而不必依賴第三方摘要或可能過時的社群筆記。對於投身 AI 媒體真實性(AI authenticity)、IP 工作流程轉型或沉浸式音訊開發的團隊而言,能夠直接查閱 ST 2067(IMF)、ST 377(MXF)或 Dolby Atmos 相關 RDD 文件,將顯著降低實作錯誤的風險。

標準圖書館的涵蓋範圍

免費開放的範圍包含 SMPTE 歷史上所有已發布的文件,以及未來所有新發布的標準,不設訂閱期或到期日。圖書館涵蓋的技術域包括:影片壓縮編碼(VC-1VC-2VC-3VC-4VC-5VC-6、JPEG 2000、Apple ProRes)、數位電影院(D-Cinema)、沉浸式音訊、色彩校正元數據、時碼與 UMID 識別碼等。

目前已有不少廠商與開源計畫依賴這些標準,例如 FFmpeg 對多種 SMPTE 格式的支援、VLC 的廣播流解碼,以及各大 NLE(非線性剪輯軟體)的媒體交換功能。SMPTE 的這一步驟,讓整個開源媒體生態系的開發者終於有了官方規格的直接背書。

原始來源:SMPTE 官方公告 · SMPTE Standards Library


一位 SRE 工程師給研究社群的公開信:事故處置不是除錯,請來幫幫我們

Surfing Complexity (Lorin Hochstein) · 2026-06-16

資深網站可靠性工程師 Lorin Hochstein 在 2026 年 6 月,於《Journal of Systems and Software》期刊的「Dear Researchers」專欄發表了一篇公開信,題為〈Dear researchers: help me deal with incidents!〉。他以一位從學術界轉入業界的工程師身份,向軟體工程研究社群直白地說明:事故回應(incident response)這個領域嚴重缺乏來自軟體工程研究者的投入,而現有研究卻對他的日常工作幾乎沒有幫助。全文預印本已由 Hochstein 在其部落格免費公開。

事故回應和除錯是不同的事

Hochstein 首先釐清一個常見的誤解:事故回應看起來像是除錯,但兩者的目標根本不同。除錯的目標是找出根本原因並永久修復;事故回應的目標是盡快讓系統恢復健康狀態。

為了說明這個差異,他引用了 2026 年 4 月 Bluesky 的一次線上服務中斷事件。一個新的內部服務在單一 RPC 呼叫中傳遞了一萬五到兩萬個 URI 組成的清單,每個 URI 觸發一條新的 TCP 連線且並發執行,導致 ephemeral port 耗盡、大量錯誤日誌同步寫入磁碟、作業系統執行緒爆炸性增長、記憶體壓力觸發頻繁的 Stop-the-World GC 停頓,最終服務被 OOM Killer 終止。這是典型的級聯故障(cascading failure)。

緩解措施更令人印象深刻:工程師讓服務在發起連線時,從 127.1.0.1 – 127.254.255.254 的範圍內隨機選取本地 IP 位址,而非固定使用 127.0.0.1,藉此擴大 client IP + port 的可用空間,打破死循環。撰寫這份事後報告的工程師自嘲這個解法「瘋狂但有效(insane but did the job)」——這種在生產環境永遠不可能被接受的臨時措施,在事故中卻是救命稻草。

讓事故回應困難的四個核心特性

Hochstein 列出了讓事故回應特別困難的四個結構性原因:

  • 時間壓力:系統每多停一分鐘,組織就多損失一筆錢,這種壓力讓工程師無法像偵錯時那樣慢慢推理。
  • 動態問題:系統通常不是「完全掛掉」,而是持續降級,且降級程度隨時在變化,這影響了工程師願意採取什麼力度的干預措施。
  • 沒有人理解整個系統:現代系統由多個微服務組成,各由不同團隊負責;事故往往跨越多個服務,需要多個團隊即時協作,而每個人對其他團隊的服務都只有片段知識。
  • 整合大量模糊訊號:指標、日誌、錯誤報告、用戶回饋、工程師自己的複現嘗試,在級聯故障中這些訊號極難分辨因果。Hochstein 特別提到,AI SRE 工具目前對此「時靈時不靈(hit-and-miss)」,且難以判斷它的診斷結果有多少信心可以賦予。

研究資源不是沒有,但不在軟體工程社群裡

最讓 Hochstein 感到遺憾的是,關於事故回應工作本質的優質研究確實存在,但它們來自安全科學社群,而非軟體工程研究社群——具體來說,是韌性工程(Resilience Engineering,RE)與認知系統工程(Cognitive Systems Engineering,CSE)這兩個領域。他個人維護了兩份文獻清單:resilience-engineeringcognitive-systems-engineering,收錄了他認為對從業者有實際幫助的論文。

他批評 ITIL 框架雖然是業界廣泛採用的 IT 服務管理框架,但它以流程為導向,只關注「事故原因(problem)」與「事故持續時間」這兩個指標。ITIL 把事故分析簡化成可以統計圖表的資料點,卻丟棄了所有真正有洞見的質性細節,這恰好與 RE 和 CSE 的研究發現背道而馳。

Hochstein 向研究者提出的具體請求

信中,Hochstein 向研究者提出了幾個具體方向。首先,他希望看到更多以診斷與緩解(diagnostic and mitigation)視角撰寫的事故案例研究,而非簡化成 ITIL 式的問題分類。他特別提到兩篇 CSE 經典論文作為他期待研究方向的範例:Rasmussen 與 Jensen 的〈Mental procedures in real-life tasks〉引入了「抽象階層(abstraction hierarchy)」概念,描述故障排除者如何在功能目的與物理形式之間上下移動;以及〈How Not to Have to Navigate Through Too Many Displays〉探討觀測儀表板導覽問題,引入了「視覺動量(visual momentum)」概念,他認為這個概念至今仍未被實際應用到 SRE 的 observability 工具設計中。

其次,他希望研究者更嚴謹地評估 AI SRE 工具在真實事故脈絡中的效能,因為這類工具目前主要靠廠商的行銷推動,缺乏來自學術界的獨立評估。最後,他呼籲研究者走進從業者社群,建議參加 USENIX 主辦的 SREcon,或加入新成立的 Resilience in Software Foundation——一個由有學術傾向的 SRE 從業者組成、真的會閱讀學術論文的專業組織。

原始來源:Surfing Complexity — Dear researchers column · 預印本 PDF


End of article
0
Would love your thoughts, please comment.x
()
x