譯/VR陀螺 Welkin
在近日蘋果正在召開的WWDC 2023上,RealityKit Tools團(tuán)隊(duì)的Tricia Gray帶來了主題為“為空間計(jì)算打造偉大的游戲”的演講,旨在幫助開發(fā)者了解能夠?yàn)锳pple Vision Pro創(chuàng)造怎樣的游戲體驗(yàn)。此外,她還分享了為該平臺創(chuàng)建游戲的關(guān)鍵構(gòu)件。
以下為講實(shí)錄(VR陀螺翻譯,基于原文略有修改):
Tricia Gray(圖源:蘋果)
大家好!我是Tricia Gray,在RealityKit Tools團(tuán)隊(duì)工作。今天很高興能和大家談?wù)劄閂ision Pro制作游戲的問題。
空間計(jì)算使各種新的游戲類型成為可能,它具有獨(dú)特的渲染、音頻和輸入特性。
當(dāng)涉及到可以使用哪些框架和工具在上面構(gòu)建游戲時,你有幾個選擇,包括RealityKit。但首先,我將讓你了解到在這個新平臺上可以做哪些類型的游戲。
Vision Pro是一個獨(dú)立的空間計(jì)算設(shè)備。它具有高分辨率的屏幕,寬闊的視野,以及出色的刷新率。空間音頻是無比驚艷的。還有LiDAR,可以追蹤手部動作和玩家周圍房間的形狀。玩家可以通過該設(shè)備的高質(zhì)量透視功能與周圍環(huán)境保持聯(lián)系。
空間計(jì)算設(shè)備有著令人振奮的可能性,讓你可以創(chuàng)建各種不同的游戲類型。
圖源:蘋果
你可以構(gòu)建跨越沉浸感范圍的游戲,這完全取決于你想要吸引玩家的多少注意力。
所有應(yīng)用程序和游戲都在“共享空間”(Shared Space)中開始。這意味著你的游戲可以與其他游戲和應(yīng)用程序以及玩家的周圍環(huán)境一起存在于這個空間中。在玩家的現(xiàn)實(shí)桌面上可能有一個虛擬棋盤,或者有一只坐在地上的虛擬寵物。所有這些應(yīng)用程序都在一起,玩家可以與任何一個交互。
當(dāng)你進(jìn)入“全空間”(Full Space)時,就可以把所有注意力都放在你的游戲上。這時將關(guān)閉其他的所有窗口(Windows)和體積(Volumes),將體驗(yàn)集中在你的內(nèi)容上,同時仍然讓玩家通過透視與周圍環(huán)境保持聯(lián)系。這可能適合于動作游戲——你正在積極地玩游戲,但仍與現(xiàn)實(shí)世界互動。例如,你可以讓宇宙飛船從墻上的洞里飛出來。
完全沉浸式(Fully immersive)體驗(yàn)則是指游戲占據(jù)了整個視野。有一個虛擬環(huán)境取代你的房間,你不再能看到現(xiàn)實(shí)世界。
當(dāng)然,你也可以制作傳統(tǒng)的2D游戲。它們在一個虛擬窗口中運(yùn)行,玩家可以將這個窗口隨心所欲地放大或縮小。它甚至不必是一個垂直的窗口,而可以是一個鋪在地上的平面。玩家可以把窗口掛在墻上或放在桌面上,或者把它作為有史以來最大的屏幕放在自己面前。
玩家可以像在iOS上一樣與你的游戲互動,但他們不是通過觸摸屏幕,而是看著一個對象,然后用手指敲擊來選擇它。你還可以連接藍(lán)牙控制器或鍵盤,就像在iOS上一樣。透視功能此時很有幫助,因?yàn)槟憧梢韵蛳驴吹秸谑褂玫氖直?/p>
你還可以通過添加一些3D元素來為2D游戲增色。例如,你的窗口有真正的深度,所以可以在單獨(dú)的圖層中渲染對象,并獲得真實(shí)的視差效果。也可以擁有從平面出來的元素,如煙霧或火花?;蛘吣憧梢蕴砑訉ψ远x手勢的支持。
有了所有這些選項(xiàng),你就有很多東西需要考慮了。
在設(shè)計(jì)游戲時,請考慮如何利用這些新的機(jī)會來獲得游戲體驗(yàn),從擁有一塊巨大的高分辨率屏幕,到擁有可以在自己房間里玩的個人游戲。你的游戲可以出現(xiàn)在玩家的桌面上;他們可以把它放在墻上;可以有一些東西飛出來,落在玩家的手中。你可以利用玩家周圍的真實(shí)世界,或者將他們傳送到一個截然不同的地方。
圖源:蘋果
在Vision Pro上渲染、音頻和輸入的工作方式,可能與你在其他平臺上已習(xí)慣的方式不同。
當(dāng)在共享空間中運(yùn)行時,你的游戲內(nèi)容與其他應(yīng)用程序、系統(tǒng)UI和透視的內(nèi)容一起被繪制。由于渲染是共享的,框架確保所有應(yīng)用程序的渲染不會相互干擾。在這種模式下,你可以通過MaterialX使用表面著色器和幾何圖形著色器。在xrOS上渲染的工作方式與你習(xí)慣的方式有所不同。你無需渲染每個像素,而是描述應(yīng)該渲染的內(nèi)容——所有的模型、紋理和著色器——然后設(shè)備會為每只眼睛自動渲染。
該平臺渲染游戲的另一個好處是,它可以運(yùn)用動態(tài)注視點(diǎn)來提高分辨率。動態(tài)注視點(diǎn)是一種技術(shù),渲染器會在玩家的眼睛所看到的部分使用更高的分辨率。這意味著你可以在這些地方獲得更清晰的分辨率,而無需支付渲染整個場景的成本,所有這些都不需要做任何艱苦的工作。
默認(rèn)情況下,RealityKit渲染物體的方式是使它們與周圍的真實(shí)世界對象逼真地融合在一起。RealityKit會對玩家房間里的實(shí)際照明進(jìn)行采樣,并將同樣的照明應(yīng)用到你渲染的對象上。對于材質(zhì),RealityKit使用了一個基于物理的光照模型,具有典型的參數(shù),如粗糙度、鏡面和金屬性。這與采樣的光照一起,提供一個逼真的外觀。
而你可以選擇自己想要的規(guī)模,從現(xiàn)實(shí)到虛擬。
你可以使用MaterialX創(chuàng)建自定義著色器內(nèi)容,并在Reality Composer Pro或其他圖形軟件包中編輯著色器圖形,而不是使用內(nèi)置的PBR著色器。你還可以為對象分配自定義的IBL,以獲得自定義的照明效果。
另一個考慮因素是,有一些系統(tǒng)范圍內(nèi)的效果會被應(yīng)用于渲染的內(nèi)容。這樣做的目的是讓你的游戲與其他應(yīng)用程序更好地協(xié)同工作,并保護(hù)玩家。
當(dāng)你的內(nèi)容隱藏在玩家周圍的物體后面時,深度緩解會使其略微透明,這可以避免物體漂浮在房間里的感覺。當(dāng)玩家離你的內(nèi)容太近時,近場暈影會使你的內(nèi)容變淡。這可以防止你的內(nèi)容在近平面上出現(xiàn)裁剪問題。透視功能允許正在接近你的人突破渲染視圖,所以他們不會在你沒有注意到的情況下撞到你。
最后,當(dāng)渲染對象靠近真實(shí)世界的物體時,會對渲染對象添加接地陰影,使它們感覺更融入于場景中。
完全沉浸式渲染的工作原理與共享渲染類似,但在這種情況下,你的應(yīng)用程序是唯一可見的東西,而不與透視內(nèi)容和其他應(yīng)用程序共享屏幕。在這種模式下,會渲染一個環(huán)境取代玩家周圍真實(shí)世界的景色。渲染工作與共享模式下類似,你仍然是描述場景,設(shè)備會渲染它。但是由于你控制了玩家所看到的一切,所以有更多的自由。例如,你不必使用與玩家所在房間相同的照明環(huán)境,可以讓世界隨心所欲地變亮或變暗。
Vision Pro的優(yōu)勢在于共享模式,但當(dāng)你想把玩家送到不同的地方時,完全沉浸式的體驗(yàn)也隨時準(zhǔn)備著。
如果你想編寫自己的引擎,CompositorServices API可以讓你訪問xrOS上的金屬渲染。你可以將它與ARKit結(jié)合起來使用,ARKit增加了世界追蹤和手部追蹤,以創(chuàng)造一個完全沉浸式的體驗(yàn)。
在這種模式下,你可以完全訪問屏幕,并為每只眼睛渲染場景。你可以使用完全定制的金屬著色器和后期處理器。這使你能夠用自己的虛擬內(nèi)容完全取代真實(shí)世界的內(nèi)容。透視和其他應(yīng)用程序?qū)⒈浑[藏。
圖源:蘋果
音頻也可以是沉浸式的。xrOS使用空間音頻將玩家空間中的物體變得栩栩如生,自動匹配混響和真實(shí)房間的聲學(xué)效果。
如果你使用標(biāo)準(zhǔn)的iOS音頻API(如AVAudioEngine)播放音頻,音頻將相對于應(yīng)用程序窗口進(jìn)行定位。如果你想讓聲音來自玩家空間中的不同對象,應(yīng)該通過RealityKit對場景中的特定實(shí)體播放音頻。你還可以選擇使用任何蘋果或外部API來制作自己的音頻。如果想讓音頻進(jìn)行頭部追蹤,你需要使用ARKit來獲得玩家的頭部位置。
除了圖形和音頻之外,互動是沉浸式體驗(yàn)的另一個關(guān)鍵部分。畢竟,每個游戲都需要輸入,而Vision Pro提供了多種與設(shè)備交互的方式。
你可以通過SwiftUI以及其他標(biāo)準(zhǔn)的系統(tǒng)手勢,如拖動和放大,獲得場景中對象的輸入事件。這是基于物理碰撞。為了使手勢在你的對象上起作用,它們需要有提供碰撞形狀的CollisionComponent和將其標(biāo)記為可互動的InputTargetComponent。
空間輸入對玩家來說可能感覺很神奇,但你也有其他的輸入選擇,甚至是游戲控制器。
雖然系統(tǒng)的“看和點(diǎn)”(Look & Tap)操作感覺很自然,但你只有一雙眼睛可以看,只有兩只手可以點(diǎn)擊、捏&或抓取。有些游戲需要更多的輸入點(diǎn),一種可能性是使用標(biāo)準(zhǔn)的藍(lán)牙控制器。xrOS支持觸控板、鼠標(biāo)和鍵盤,以及基于藍(lán)牙的游戲控制器。對于傳統(tǒng)游戲來說,這可能是個不錯的選擇。
而且xrOS還允許更多非常規(guī)的輸入,比如用你自己的身體作為控制器。你可以使用手部追蹤來讓玩家抓取虛擬對象,或者實(shí)現(xiàn)自定義手勢,比如指著一個物體或者以空手道劈砍它們。你通過ARKit訪問手部追蹤時,設(shè)備會征求玩家的許可,就像應(yīng)用程序想要使用你的位置或麥克風(fēng)時一樣。
在設(shè)計(jì)這種輸入時,有些事情需要注意。比如只有當(dāng)手被攝像頭看到時才能被追蹤,真正快速的手部運(yùn)動可能很難被追蹤。這些都需要考慮到。
圖源:蘋果
當(dāng)你在全空間中工作時,可以請求場景理解。場景理解將提供代表玩家周圍房間的虛擬網(wǎng)格,它可以進(jìn)行平面檢測,以找到水平和垂直表面。你還能得到這些表面的材質(zhì),無論是地毯還是木材。這讓你可以把房間本身作為游戲輸入的一部分。就像手部追蹤一樣,這需要得到玩家的許可。
對于所有的輸入選項(xiàng),你必須弄清楚什么適合你的游戲。使用玩家的身體進(jìn)行直接輸入是吸引他們的一個好方法,但舉手和做手勢也會隨著時間的推移讓人感到疲憊。如果你的游戲要玩很長時間,或者需要很多快速的動作,請考慮如何利用間接手勢和注視。這樣玩家就可以將手舒適地放在膝蓋上,用看和點(diǎn)來操作,而不用移動他們的手。
Vision Pro是每天都要使用的設(shè)備,所以舒適性很重要。如果有必要,你也可以使用更傳統(tǒng)的游戲控制器。
這個平臺支持你在其他平臺上所有的多人游戲和網(wǎng)絡(luò)功能?;赪eb的網(wǎng)絡(luò),基于低級套接字的網(wǎng)絡(luò),以及多人連接都可以為你所用。SharePlay還可以讓玩家輕松地以更親密的方式進(jìn)行社交。
你甚至可以利用網(wǎng)絡(luò)構(gòu)建游戲,讓一些玩家在iPhone或iPad上玩,并且仍然連接到Vision Pro。想象一下,與擁有iPad的朋友一起玩多米諾骨牌游戲,他們有2D體驗(yàn),而你擁有豐富的、身臨其境的3D體驗(yàn)。
圖源:蘋果
現(xiàn)在你對作為游戲設(shè)備的Vision Pro有了更多的了解,下面是可以用來創(chuàng)建游戲的框架。
根據(jù)你是想做的是2D游戲,存在于體積中的游戲,還是完全沉浸式的游戲,你有不同的選擇。比如使用我們的沉浸式框架RealityKit,或者直接在Metal上面編寫東西,甚至使用Unity引擎。
如果你已經(jīng)為iPhone或iPad制作了游戲,在大多數(shù)情況下,你的游戲會自動在Vision Pro上的虛擬窗口中運(yùn)行,使用 “看和點(diǎn)”進(jìn)行交互。這也適用于兼容的3D游戲,它們將在一個平面窗口中運(yùn)行。如果你希望游戲是立體的,必須使用空間計(jì)算API。
能夠運(yùn)行兼容的游戲固然很好,但如果你想充分利用Vision Pro的優(yōu)勢,就要針對它來制作游戲。這樣你就可以使用手勢進(jìn)行輸入,或添加2.5D元素,如透視或體積煙霧。
你可以使用SwiftUI或SpriteKit等2D框架為該設(shè)備構(gòu)建2D游戲。你可以使用Unity來為xrOS構(gòu)建游戲。如果你已經(jīng)有想要移植的Unity游戲,或者你是Unity開發(fā)者,這是一個不錯的選擇。
最后還有RealityKit,蘋果用于構(gòu)建沉浸式空間體驗(yàn)的實(shí)時渲染框架。該API有很多新功能,使其成為為xrOS創(chuàng)建3D游戲的絕佳方式。RealityKit擁有制作偉大游戲所需的所有功能。
它擁有用于自定義行為的實(shí)體組件系統(tǒng),以及對物理學(xué)、動畫、粒子和音頻支持的可擴(kuò)展性。在渲染方面,RealityKit支持USD模型和自定義網(wǎng)格;MaterialX和IBL照明可以讓你的對象融入現(xiàn)實(shí)世界;Attachments是一個新功能,它允許你將豐富的SwiftUI直接連接到你的RealityKit對象;使用SwiftUI,你可以使用窗口、體積、空間、錨點(diǎn)和傳送門等功能,以各種方式混合透視和渲染的內(nèi)容。你可以使用系統(tǒng)手勢進(jìn)行輸入,也可以使用ARKit來訪問手部追蹤和場景理解。
要開始為xrOS構(gòu)建游戲,你可以從xrOS模板創(chuàng)建一個新的Xcode項(xiàng)目。這會給你提供一個SwiftUI窗口,其中包含一個RealityView。在SwiftUI的層次結(jié)構(gòu)中,RealityView包含游戲的3D渲染和模擬。
默認(rèn)情況下,你的3D內(nèi)容顯示在一個由窗口形成的體積框中。你的內(nèi)容被限制在該窗口內(nèi),并且會隨著它的移動而跟隨。
RealityKit是一個Swift API。Swift可以成為構(gòu)建游戲的絕佳語言,但是如果你想使用其他語言也完全可以,只需在該語言和Swift API之間建立一個橋梁。
Xcode自帶一個模擬器,你可以在沒有設(shè)備的情況下立即開始開發(fā)游戲。當(dāng)然,最好在真正的設(shè)備上進(jìn)行測試。
圖源:蘋果
您的3D內(nèi)容將默認(rèn)顯示在SwiftUI窗口中。作為游戲開發(fā)者,你要做的第一件事就是跳出這個窗口,并在玩家的周圍繪制內(nèi)容。你有一些不同的選擇來實(shí)現(xiàn)。
你可以使用一個體積,其與窗口相似,但有一個重要的區(qū)別。對于窗口,玩家可以控制其大小,通過拖動角落使其隨心所欲地變大或變小,而你的內(nèi)容也必須適應(yīng)窗口。如果窗口對你的內(nèi)容而言太小,你的內(nèi)容就會被裁剪。
對于體積情況正好相反,你可以定義其長、寬、高。玩家仍然可以把它放在任何想放的地方,但這個體積將永遠(yuǎn)是相同的大小。因此,你可以確保這個體積足夠大以容納你的整個體驗(yàn),而且還可以確保內(nèi)容不會被裁剪。
如果你根本不想使用體積,還可以使用空間。這允許你在現(xiàn)實(shí)世界中對玩家周圍的內(nèi)容進(jìn)行渲染。例如,你可以用嗡嗡作響的蜜蜂包圍玩家。
有不同種類的空間,對應(yīng)不同的游戲類型。你可以使用共享空間與其他應(yīng)用程序一起運(yùn)行,如果你希望自己的游戲是唯一運(yùn)行的東西,則可以使用全空間。
錨點(diǎn)可以讓你把場景錨定在現(xiàn)實(shí)世界的一個對象上,并在它移動時跟隨。你可以使用水平或垂直的表面錨,將實(shí)體固定在桌子或墻上。也有一些手錨,可以讓你把內(nèi)容錨定在玩家的手上。
傳送門允許你在玩家的現(xiàn)實(shí)中打一個洞,以創(chuàng)造的夢幻般的現(xiàn)實(shí)。你可以把傳送門錨定在一面真實(shí)的墻上,讓傳送門在墻上開一個洞,讓玩家窺視洞內(nèi)的渲染世界。你可以在這個傳送門內(nèi)渲染自己想要的東西,而傳送門內(nèi)的對象也可以出現(xiàn)在現(xiàn)實(shí)世界中。
RealityKit可以加載和渲染USD文件。開始使用體積內(nèi)容的最簡單的方法之一,是用預(yù)先制作的對象來組裝場景,但為此你需要某種視覺工具。Reality Composer Pro是一個與Xcode捆綁的工具,它可以讓你加載USD模型并預(yù)覽它們在設(shè)備上的外觀。當(dāng)你使用Reality Composer Pro構(gòu)建項(xiàng)目時,資產(chǎn)會自動優(yōu)化以便在Vision Pro上使用。
我希望本次會議對空間計(jì)算游戲的開發(fā)計(jì)劃有所幫助。這是一個很好的社交平臺,可以和其他人一起玩游戲。我迫不及待地想看到你們?yōu)閂ision Pro開發(fā)的成果。
圖源:蘋果
原資料:Build great games for spatial computing
https://developer.apple.com/videos/play/wwdc2023/10096/
投稿/爆料:tougao@youxituoluo.com
稿件/商務(wù)合作: 六六(微信 13138755620)
加入行業(yè)交流群:六六(微信 13138755620)
版權(quán)申明:本文為VR陀螺原創(chuàng),任何第三方未經(jīng)授權(quán)不得轉(zhuǎn)載。如需轉(zhuǎn)載請聯(lián)系微信:vrtuoluo233 申請授權(quán),并在轉(zhuǎn)載時保留轉(zhuǎn)載來源、作者以及原文鏈接信息,不得擅自更改內(nèi)容,違規(guī)轉(zhuǎn)載法律必究。文中有圖片、視頻素材來自互聯(lián)網(wǎng)或無法核實(shí)出處,如涉及版權(quán)問題,請聯(lián)系本網(wǎng)站協(xié)商處理。
元宇宙數(shù)字產(chǎn)業(yè)服務(wù)平臺
下載「陀螺科技」APP,獲取前沿深度元宇宙訊息