開發(fā)者更新 - 2023年2月16日

歡迎來到2023年2月16日的開發(fā)者更新!這是2023年的第五個開發(fā)者更新。
首先感謝DrMorro,他的獲獎作品Organism為本周的開發(fā)者更新封面增色不少。我想告訴你們在Organism中“迷失”,但那聽起來有點刻薄。而且在那里迷失似乎是理所當然的。
如果你想回顧之前的開發(fā)者更新,可以閱讀我們之前發(fā)布的專欄:

這次的更新內容相對技術性較強,請耐心閱讀這堆文字。
創(chuàng)作者助手提醒
我們目前計劃在發(fā)布更新后等待更新的VRChat創(chuàng)作者助手帶有Web用戶界面(我們稱之為“VCC Web”)之后,再全面切換到VCC。
根據反饋,我們正在研究直接下載軟件包。它們將是與VPM兼容的UnityPackages,而不是舊版本的包。 VCC仍將是推薦的和主要的方法來設置VRChat SDK并保持其更新。
一旦VCC發(fā)布,SDK2將同時被棄用,并且SDK2將不再提供下載。
禁止從舊版本Unity上傳
我們現在正在主動阻止舊于2019年的Unity版本的上傳。這只影響了極少數的創(chuàng)作者!
如果用戶使用的Unity版本過舊并且被阻止上傳,他們會在Unity控制臺中看到以下消息:

任何仍在2019年之前的版本上的用戶應逐步升級至目前支持的Unity版本。
SDK2廢棄
正如在之前的開發(fā)者更新中所指出的那樣,未來的某個日期(尚未確定,但可能在“幾個月后”),將不再允許上傳SDK2創(chuàng)建的世界和Avatar。我們將盡可能支持現有的SDK2內容在VRChat中使用。
如果您正在維護一個SDK2世界項目并希望進行遷移,CyanLaser維護了CyanTrigger,它為Udon提供了類似SDK2的接口。他還創(chuàng)建了一個名為SDK2 migrator的工具,可以自動將SDK2轉換為SDK3,包括像SDK2支持的復雜資源,比如Standard Assets包。
VRChat 2023.1.1 更新
2023.1.1p2
我們在2月9日發(fā)布了VRChat的補丁,其中包含了一些小的修復和改進!
2023.1.1p2 補丁說明
客戶端
改進
群組橫幅的透明度現在遵循圖標透明度,即使將名牌透明度設置為0,橫幅仍將可見。
您仍然可以通過快捷菜單中的群組橫幅開關完全關閉群組橫幅。
群組橫幅現在使用mipmaps,意味著它們在遠處不再閃爍,并且在視覺質量方面有所提高。
相機現在有一個選項,在遠右邊的選項中可以顯示用于更容易進行照片構圖的九宮格網格!
修復
修復了在移動Stations中相機運動跳躍的問題。
我們仍在努力改進UI和在移動時抓取功能。
修復了玩家在嘗試在無人機相機模式下移動時退出Stations的問題。
修復了桌面模式下瞄準相機的問題。
修復了“拍照”按鈕在相機保存多層圖像時可視外觀啟用。保存高分辨率分層圖像可能需要一段時間--在8K下,每張圖像約為45MB!
修復了菜單FPS計算,允許顯示低于11的FPS值……雖然我們希望你不需要太經常體驗到這一點!
在桌面模式中的鍵盤控制菜單中添加了“Y”按鈕用于聊天框。
玩家模式丟失
在我們于一月中旬完成后端系統(tǒng)的維護和升級期間,一些玩家的限制(屏蔽、靜音等)可能在升級過程中丟失。
很遺憾,這些玩家的限制將無法恢復!為了避免未來再次發(fā)生這種情況,我們正在審查升級過程,以確保不會丟失這些數據。對于可能引起的不便,我們深表歉意!
持續(xù)開發(fā)
Avatar性能統(tǒng)計變更
我們對Avatar性能等級系統(tǒng)進行了兩項改進!
Avatar的VRAM使用現在會影響性能等級
一段時間以來,我們開始計算Avatar?VRAM使用情況,即角色紋理所占用的顯存(目前不計算網格)。這被證明是很有用的,因為人們發(fā)現他們的設置在VRAM方面有點過大,然后進行了優(yōu)化!
現在是時候完全實施這項統(tǒng)計了。在即將發(fā)布的版本中,Avatar的VRAM使用情況將影響性能等級。
以下是我們正在考慮的數值。請記住,這只計算紋理部分!Thry的工具還包括網格部分。(這仍然是一個很棒的工具。嗨,Thry!)
PC Avatars
優(yōu)秀:<40MB
良好:<75MB
中等:<110MB
較差:<150MB
這意味著非常差是大于等于150MB的任何Avatar。
Quest Avatar
優(yōu)秀:<10MB
良好:<18MB
中等:<25MB
較差:<40MB
這意味著非常差是大于等于40MB的任何角色。
這些數值是如何確定的?
好問題!
讓我們從PC Avatar開始。首先,我們需要確定我們可以使用多少VRAM。我們查看了Steam硬件調查以及我們自己的內部分析數據,將8GB的VRAM作為一個合理的中位數值。
接下來,我們需要定位一個與用戶遇到的平均實例大小接近的實例大小,但又留出足夠空間容納相對較重的實例。這給了我們一個實例大小為20的值,所以任何數值都需要在8GB中的20個Avatar之間分配。
除此之外……不完全如此。在VR合成器和您的操作系統(tǒng)之間,我們假設2GB的VRAM已經被使用。此外,您所在的世界也需要VRAM!我們還要再減去1GB。
所以,我們將剩下的5GB,分配給20個Avatar,得到了以上數值。
如果您有一張高VRAM顯卡,對您來說這仍然是好消息!在PC上,在一個有80個玩家的實例中,充斥著剛好不到“較差”級別(149.9MB)的Avatar,紋理僅會占用12GB的VRAM。聽起來是很多,但目前在完整的實例中,情況要糟得多,有時候,當某個Avatar使用20個8K紋理的中等級別的Avatar時,使用3090、4090和7900XTX等卡的VRAM會被吃光。真是可怕。發(fā)抖
那Quest的數值呢?
很簡單!
Quest有6GB的共享RAM,CPU和GPU之間共享。沒有VRAM,只有RAM。
實際上,我們只能使用其中的約4GB RAM。Quest的底層操作系統(tǒng)會消耗大部分。
由于我們已經為PC完成了大部分的工作,所以我們可以通過簡單地將PC數值除以4來近似縮小尺寸,得到Quest的數值。
這將影響多少Avatar?有多少Avatar會變?yōu)榉浅2睿?/strong>
又是一個很好的問題。我們進行了研究。答案是“數量非常少”。在此更改后,僅有約0.8%的Avatar將從未被評為非常差的等級降至非常差等級。
讓我們用另一種方式來看待這個問題。

這是VRChat中的一小部分Avatar。每個餅圖代表了該Avatar當前的性能等級。
每個餅圖的每個扇區(qū)表示在VRAM統(tǒng)計方面,該等級內的角色將如何被分類。例如,目前處于中等等級的Avatar中,落入橙色“較差”扇區(qū)的Avatar在此系統(tǒng)實施后將降至較差等級。
總之,大多數Avatar不會因為這個變化而改變等級。很少有Avatar會降至非常差等級。
當然,這些餅圖有些誤導性,因為您不知道每個等級有多少Avatar(我不會告訴您)。因此,各個扇區(qū)看起來比您預期的要大。
我可以告訴您,有很多非常差的Avatar不會因此變化。請記住這一點。
SDK會告訴我這個信息嗎?
是的,我們將在SDK中實現這個功能,這樣在我們實施這個更改時,你就能知道正在發(fā)生的情況。
Avatar約束
我們還將在Avatar統(tǒng)計中添加約束!這僅適用于PC,因為Quest沒有約束。我們很快會講到這個問題。

這個統(tǒng)計數據暫時不會影響性能排名,但是正如你所見,我們推薦的最大值是15。
等等,僅僅15個?我以為約束是非常節(jié)省資源甚至是不消耗資源的?
是的,我們也是這樣認為的。但我們錯了。

約束對幀時間有很大的影響,并且有一個“懸崖”,如果你超過了它,約束的成本會突然增加30%,并且添加的限制越多,情況會變得更糟。
你是怎么得出15是你推薦的值的?
和VRAM的計算方式類似。設定一個目標,按平均實例進行分割,但保留一些空間來處理更復雜的實例。
約束到底有多糟糕?
少量的約束并不可怕,但是隨著數量的增加...相當糟糕。以下是我們所做的一些研究。下面是數學計算。
從場景中啟用0到682個約束,每個約束大約耗費3.2微秒(0.0032毫秒,但請記住每幀在90FPS下約為11毫秒)。這聽起來很?。ǘ覇为殎砜创_實很小),但它們累積得很快。在場景中有300個約束時,耗費的時間是0.96毫秒,約占你的幀時間預算的9%。將它增加到600個,幾乎有五分之一的幀時間用于約束??!
這在用戶通常已經超過11毫秒目標的情況下是很多的,尤其考慮到像克隆、衣服附件和其他由社區(qū)創(chuàng)建的系統(tǒng)通常為單個Avatar包括幾十個或幾百個約束。在一個VRChat實例中有超過一千個活動約束并不罕見。??
但是如果你有一千個約束,你還有另一個問題:約束的懸崖。
什么是“懸崖”?
如前所述,這個成本僅僅是簡單的累加...直到你達到683個約束。

如果你對這個分析工具不熟悉,它是比較兩個幀和計算每個幀所需時間的。在下方的部分,向右延伸的橙色條表示“右側”幀在這些特定“標記”上所花費的時間更長。我們在這里看的是與約束相關的標記。
當你從682個約束增加到683個時,Unity會出現問題。突然間,你的約束現在成本增加了30%——每幀增加了4.2微秒...并且每個組件的成本會隨著添加每個額外的約束而增加。
這似乎是Unity的一個bug,而不是我們可以解決的問題。因此,目前我們需要告訴用戶“嘿,請盡量限制使用多少約束”。
順便說一句,你也可以自己測試。這些截圖是從一個基本的Unity項目中獲取的,沒有包含VRChat代碼。
那么禁用的約束呢?
這有點復雜!
有三種方式可以關閉約束:

關閉GameObject或組件(綠色復選框)的成本非常低,幾乎可以忽略不計。
然而,約束還有一個IsActive屬性(紅色顯示)。將其設置為False,但GameObject和組件設置為True也會產生成本,盡管這個成本沒有活動約束那么高。此外,這些IsActive為False的約束似乎不會對“懸崖”產生影響,但它們會使事情變慢,所以不要使用IsActive復選框來打開和關閉約束。請關閉組件或GameObject。
你難道不能只計算啟用的約束嗎?
當然可以,但你也可以對它們進行動畫處理。
然后,不,在你訪問之前,我們不能在更改時重新掃描。掃描性能統(tǒng)計信息是非常費資源的,所以我們只在加載Avatar時進行一次掃描。
約束是否多線程處理?
有點。它們在主線程之外執(zhí)行,但是它們有一個單線程依賴排序步驟,使得多線程處理變得無關緊要。???
這適用于所有類型的約束嗎?
我們只測試了父約束,每個約束只有一個來源。其他類型的約束可能有不同的行為。
哦...而且VRChat的Quest版本似乎不支持約束。這就是為什么你在Quest上沒有啟用約束的原因嗎?
是的。
那現在怎么辦?
我們正在考慮一些解決方案,但現在還沒有準備好談論。
我們正在與Unity聯系,就這個buggy行為以及奇怪的主線程依賴性進行溝通。我們還沒有在更新的Unity版本上進行測試,所以可能在后來的版本中這種行為已經有所改變。請記住,約束在2019.4版本中才是新功能!
目前,我們希望Avatar創(chuàng)作者在約束方面要謹慎,避免使用大量約束的預制件和系統(tǒng)。在整個Avatar中,啟用或禁用的約束最多應為15個,不管是不是已經啟用。如果它們不使用,請通過禁用它們所在的GameObject或組件來關閉它們。
快捷菜單中的Udon UI
這個功能目前正在開發(fā)中,我們已經有一個工作中的內部版本,其中世界可以指定在快捷菜單中顯示各種控件(按鈕、滑塊、切換、標簽等)的方式,這些控件將顯示在一個新的選項卡中。
這個功能使得創(chuàng)作者更容易添加特定于世界的控件和信息,讓訪問者可以輕松找到并理解!
有多種方法可以添加和組織這些UI控件,包括直接在Udon中完成。然而,我們首先專注于創(chuàng)建一個Unity編輯器窗口,您可以在其中構建和預覽Udon UI布局。
例如,向一個世界添加一個簡單的“傳送到屋頂”按鈕可能如下所示:
打開Udon UI編輯器窗口。
點擊“New QuickMenu UI”,這將啟用布局并呈現一個空的UI槽。
將包含傳送功能的UdonBehaviour拖放到此槽中,這將將其添加到輪廓中,并顯示一個選擇器,其中列出了Udon程序中可用的公共變量和事件。
從列表中選擇“TeleportToRoof”事件。
這將在快捷菜單UI中添加一個新的按鈕,標記為“TeleportToRoof”,當用戶按下它時,將觸發(fā)此事件。
下面是一個顯示窗口兩個主要部分的基本線框圖——UI預覽,您可以在其中看到您的控件在快捷菜單中的樣子,以及輪廓,您可以查看和編輯這些控件的詳細信息。

Udon變量也可以與UI綁定,并顯示目標變量的最新值,無論是通過UI還是通過Udon程序更改的。例如:
一個創(chuàng)作者創(chuàng)建了一個默認情況下打開Post-Processing效果的世界。他們創(chuàng)建了一個UdonBehaviour,可以使用名為postProcessingEnabled的布爾變量切換效果的開啟和關閉,以及使用名為postProcessingWeight的浮點變量來調整效果的強度。他們選擇這兩個變量顯示在默認的Udon UI組中,并將postProcessingWeight變量的范圍設置為(0,1)。當玩家訪問他們的世界時,他們可以在快捷菜單中輕松地使用滑塊來設置效果的強度,并使用開關來完全打開或關閉效果。
請記住,隨著我們繼續(xù)開發(fā),這一切都可能會有所改變!我們會盡力回答關于這個新的編輯窗口和Udon UI系統(tǒng)的問題,但仍然有一些細節(jié)和工作流程需要解決。以下是一些可能首先出現的問題:
快捷菜單中Udon UI的外觀是可以定制的,但在推出時還不支持。
您可能可以直接定位屬性,而不僅僅是UdonBehaviour的變量和事件,但在推出時可能不支持。
您將能夠在運行時使用Udon添加和刪除控件...但在推出時可能不支持。??
您可以將這些相同的控件應用到世界空間的畫布上,而不僅僅是快捷菜單中。
我們正在考慮本地化這個功能,但目前還沒有在計劃中。 我們非常期待把這個功能交到你手上!
SDK 3.1.11 已經準備好發(fā)布了!
SDK 3.1.11 已經準備好發(fā)布,包括我們的遠程圖像和字符串下載器、MIDI播放功能,以及以下內容:

Unity Inspector現在將檢測缺少的VRCUrlInputField變量,并在此組件未能正確加載時提供重新加載SDK的選項(已知問題,將在我們可以升級到Unity 2020或更高版本時修復)。
如上面的創(chuàng)作者助手提醒部分所述,我們仍將提供Web UnityPackage下載,這樣您也可以通過導入方式進行更新,但強烈建議使用VCC!
VCC Web更新
創(chuàng)作者助手的Web版本已經添加了一個有關初次運行的新教程,向您展示基本操作并指導您安裝Unity Hub和正確的Unity編輯器版本。

我們離發(fā)布創(chuàng)作者助手的Web版本已經非常接近了!很快!
群組Web界面
我們花費了大量時間對VRChat主頁的后端進行重構和修復,尤其是群組部分!
總的來說,您應該會注意到加載和渲染速度更快,更穩(wěn)定,并且加載和錯誤狀態(tài)也更好。
這個功能即將到來,如果還沒有發(fā)布的話!
您可以撫摸貓貓
現在您可以在vrchat.com/home上拍一拍VRCat徽章了。

就是這樣