Bu özellik deneysel aşamadadır, böylece onu deneyebilir, geribildirimde bulunabilir ve neler planladığımızı görebilirsin. Şu anda Özel Çanta ve Eşyalar kullanan bir projeyi yayınlayamazsın.
Deneysel aşamada oluşturulan öğeler için geriye dönük uyumluluğu garanti etmediğimizi, bu özelliklere yönelik API’lerin değişebileceğini ve kendi takdirimize bağlı olarak tüm deneysel özellikleri veya belirli işlevsellikleri kaldırabileceğimizi lütfen unutma. Özellik ile çalışmaya başlamadan önce bilinen sorunlar listesine göz at.
Bu eğitim, özel bir anahtar kartı öğesi oluşturmak için Özel Çanta ve Eşyalar sistemini Scene Graph ve Verse ile nasıl kullanacağını göstermektedir.
Özel bir anahtar kartının nasıl oluşturulacağını öğrenmek için bu örneği oluşturduktan sonra kilitli alanlara erişmek amacıyla anahtar kartları bulmaya ve bunları kullanmaya yönelik hedefler içeren oyunlarda özel bir anahtar kartı kullanabilirsin. Bazı örnekler şunlardır:
Bir soyguna ilişkin objeyi içeren kilitli bir oda
Oyunundaki bir sonraki alan
Bir boss’un yenilmesi karşılığında verilecek hazine veya ödüller
Başlamadan Önce
Bu eğitimi başarıyla tamamlayabilmek için UEFN, Scene Graph ve Verse kodu konusunda bilgi sahibi olman gerekir.
Projeni Ayarla
Projeni ayarlamak ve Özel Çanta ve Eşyalar’ı etkinleştirmek için aşağıdaki adımları izle.
UEFN’i aç ve herhangi bir ada şablonundan bir proje oluştur. Ada Şablonları’nda, üzerinde çalışacağın düz bir alan olmasını istiyorsan Boş projeyi kullanabilirsin. Yeni projene bir ad ver ve onu editörde açmak için Oluştur’a tıkla.
Araç çubuğundan Proje’ye tıkla ve Proje Ayarları’nı seç.
Aşağı kaydırarak Deneysel Erişim bölümüne git ve Çanta Sistemi kutusunu işaretle. Bu, Özel Çanta ve Eşyalar’ı etkinleştirir.
Odanı Oluştur
Öncelikle örneğe ilişkin odayı oluşturman gerekir. Örnek, iki kilitli kapıyı karşılaştıran bir gösterim gibi yerleştirilmiştir:
İlk kilitli kapı, bir Fortnite anahtar kartının, Kilit cihazı olan bir kapıyı, oyuncunun anahtar kartına sahip olup olmadığını belirlemek için bir Koşullu Buton cihazı kullanarak nasıl açtığını gösterir.
İkincisi ise mevcut Fortnite anahtar kartı eşyası yerine nasıl özel bir anahtar kartının kullanılacağını gösterir ve oyuncunun özel anahtar kartına sahip olup olmadığını belirlemek için Verse’ü kullanır.
Örneğe ilişkin odayı oluşturmak için aşağıdaki Fortnite öğelerini kullanabilirsin:
Oda: İçerik Tarayıcısı’nda Fortnite > Gri Kutu Öğeleri > Demo’ya git. Bu örnekte DemoRoom öğeleri kullanılmaktadır.
Demo standı: İçerik Tarayıcısı’nda Fortnite > Gri Kutu Öğeleri > Demo’ya git. DemoDisplay öğesini kullan.
Kapılar:
Yeşil Duvardaki Kapı: Fortnite > Galeriler > Bina > Eğik Evler Duvar Galerisi N’ye git. İlk satırın sonundaki Banliyö İç Kapısı C 02 a8a9d603’ü bul.
Üstte Koyu Renk Süslemesi Olan Taba Rengi Duvardaki Kapı: Yukarıdaki galeride, hemen solda Banliyö İç Kapısı C 02 a9577d9d vardır.
Masa: Fortnite > Nesneler > Super’e git. Akademi Yuvarlak Masası A 13a044066’yı bul.
Cihazları Ayarlama
Gereken Cihazlar:
1 adet Oyuncu Çıkma Yeri
2 adet Kilit cihazı
1 adet Koşullu Buton cihazı
2 adet Bölge cihazı
1 adet Eşya Yerleştirici (Teşkilat Anahtarı Kartı Eşyası)
Fortnite Anahtar Kartı İçin Kapıyı Ayarlama
Tipik bir Fortnite kilitli kapısı ayarlamak için bir kapı seç. Birinci kapıya dair cihazları ayarlamak için şu adımları izle:
Kapının yanına, duvarın üzerine bir adet Kilit Cihazı yerleştir. Ayrıntılar panelinde, cihaz seçeneklerini aşağıda gösterildiği gibi özelleştir. Listelenmeyen seçenekler varsayılan değerlerinde bırakılabilir.
Seçenek
Değer
Açıklama
Oyun Sırasında Görünür
False (İşaretlenmemiş)
Bu ayar, oyun devam ederken Kilit cihazını gizler, böylece oyuncular cihazı görmez.
Kilitli Başlar
Kilitli
Bu, oyun başladığında kapıyı kilitli yapar.
Kilitliyken Etkileşimi Gizle
True (İşaretli)
Bu, kapı kilitliyken etkileşim istemini gizler.
Kapının Başlangıç Pozisyonu
Kapalı
Bu, kapının varsayılan başlangıç konumunun Kapalı olmasını sağlar.
Kullanıcı Seçenekleri - Fonksiyonlar altında Kilit cihazı için aşağıdaki fonksiyonları ayarla.
Kilit fonksiyonunu, aşağıdaki 3. adımda Bölge cihazını yerleştirmeden ayarlayamayabilirsin.
Fonksiyon
Hedef Cihaz
Bağlanacak Olay
Açıklama
Kilidi Aç
Koşullu Buton
Etkinleştirildiğinde
Koşullu Buton etkinleştiğinde kapının kilidi açılır.
Kilitle
ses düzeyi ve bölge
Çıkıldığında
Oyuncu, Fortnite cihazları kapısının bölgesinden çıktığında kapı kilitlenir.
Kapının ortasında olacak şekilde bir Bölge cihazı yerleştir. Ayrıntılar panelinde, cihaz seçeneklerini aşağıda gösterildiği gibi özelleştir. Listelenmeyen seçenekler varsayılan değerlerinde bırakılabilir.
Seçenek
Değer
Açıklama
Bölge Şekli
Silindir
Bu, bölgenin şeklini belirler.
Bölge Yüksekliği
0,25x
Bu, bölge silindirinin ne kadar yükseğe çıkacağını belirler.
Bölge Yarıçapı
0,9x
Bu, bölge silindirinin cihaz konumuna ne kadar yakın veya ondan ne kadar uzak olduğunu belirleyen yarıçapını ayarlar. Yarıçapın nispeten küçük olması uygun olacaktır; böylece oyuncunun bölgeye girmek için kapıya yaklaşması gerekir.
Koşullu Buton cihazını kapının yanına, Kilit cihazının altına yerleştir. Seçenekleri aşağıdaki gibi özelleştir. Listelenmeyen seçenekler varsayılan değerlerinde bırakılabilir.
Seçenek
Değer
Açıklama
Gereken Anahtar Eşyaları
True (İşaretli), 1
Koşulu karşılamak için bir anahtar eşyasının gerekli olduğunu belirtmek üzere bunu işaretle. Yalnızca bir anahtar kartının gerekli olduğunu belirtmek için alana 1 değerini gir.
1. Anahtar Eşyası
Teşkilat Anahtar Kartı (oyun içi ad) veya AGID_CP_Keycard_Agency (Eşya Kimliği)
Gereken eşyayı seçmek için açılır menüye tıkla ve “anahtar kartı”nı ara. Birkaç anahtar kartı eşyası vardır, ancak bu örnekte “Teşkilat Anahtarı Kartı” eşyası kullanılmaktadır.
Kullanıcı Seçenekleri - Fonksiyonlar altında, Koşullu Buton cihazı için aşağıdaki fonksiyonları ayarla.
Fonksiyon
Hedef Cihaz
Bağlanacak Olay
Açıklama
Etkinleştir
ses düzeyi ve bölge
Girildiğinde
Oyuncu, Fortnite cihazları kapısının bölgesine girdiğinde Koşullu Buton etkinleşir. Oyuncunun teşkilat anahtar kartına sahip olup olmadığını kontrol eder.
Kapıyı Özel Anahtar Kartı İçin Ayarlama
İkinci kapıya dair cihazları ayarlamak için aşağıdaki adımları izle.
Her iki Kilit cihazının seçenekleri de aynı olduğundan ilk Kilit cihazını kopyalayabilir ve kopyayı bölümüne yapıştırabilirsin. Cihazı ilk cihazdan ayırt edebilmen için onu yeniden adlandırman uygun olacaktır.
Kullanıcı Seçenekleri - Fonksiyonlar altında Kilit cihazı için aşağıdaki fonksiyonları ayarla.
Bu fonksiyonu, Oyuncu Doğma Karesi’ni (anchor link here to that section) yerleştirmeden ayarlayamayabilirsin.
Fonksiyon
Hedef Cihaz
Bağlanacak Olay
Açıklama
Kilitle
1. Oyuncu Doğma Karesi
Oyuncu Doğduğunda
Bir oyuncu, 1. Oyuncu Doğma Karesinden doğduğunda Kilit cihazı etkinleşir ve kapıyı kilitler.
Her iki Bölge cihazının seçenekleri de aynıdır, dolayısıyla birinci Bölge’yi de kopyalayabilir ve kopyayı bölümüne yapıştırabilirsin. Cihazı ilk cihazdan ayırt edebilmen için onu yeniden adlandırman uygun olacaktır.
Masayı Anahtar Kartları İçin Ayarlama
Masayı Fortnite anahtar kartı ve senin özel anahtar kartınla ayarlamak için aşağıdaki adımları izle.
Eşya Yerleştirici cihazını, masanın yalnızca cihaz kullanan kilitli kapıya en yakın tarafına yerleştir.
Ayrıntılar panelinde, Eşya Yerleştirici cihaz seçeneklerini aşağıda gösterildiği gibi özelleştir.
Seçenek
Değer
Açıklama
Eşya Listesi
Teşkilat Anahtar Kartı
Bir dizi öğesi eklemek için + simgesine tıkla, ardından açılır menüye tıkla ve “anahtar kartı”nı ara. Ardından Teşkilat Anahtarı Kartı eşyasını seç.
İçerik Tarayıcısı’nda özel anahtar kartı eşyanı bul ve onu bölüme sürükle. Özel anahtar kartını masanın üzerine, onun için ayarlanmış olan kilitli kapıya en yakın tarafa yerleştir.
keycard_gameplay_device’ı (add anchor link here) oluşturduktan sonra İçerik Tarayıcısı’nda Verse cihazını bul ve onu bölümüne sürükle.
Oyuncu Doğma Karesi’ni Ayarlama
Son olarak, bir Oyuncu Doğma Karesi yerleştirmen gerekecektir. Bu örnek için yalnızca bir Oyuncu Doğma Karesi’ne ihtiyacın var. Ancak çok oyunculu bir oyun oluşturursan daha fazla Oyuncu Doğma Karesi ayarlamak için aşağıdaki adımları takip edebilirsin. Ya da kendi ada deneyimine göre bunları farklı şekilde ayarlayabilirsin.
Oyuncu Doğma Karesi’ni, oyuncunun masayı ve iki kapıyı hemen göreceği bir yere yerleştir.
Cihaz seçeneklerini aşağıda gösterilen şekilde özelleştir.
Seçenek
Değer
Açıklama
Oyunda Görünür
False (İşaretlenmemiş)
Bu örnekte Oyuncu Doğma Karesi görünmezdir.
Artık oda ve cihaz kurulumunu yaptığına göre özel anahtar kartını oluşturabilirsin.
Özel Bir Eşya Varlık Prefabı Oluştur
İçerik Tarayıcısı’nda bağlam menüsünü açmak için sağ tıkla ve Varlık Prefab Tanımı’nı seç. Böylece İçerik Tarayıcısı’na yeni bir Scene Graph varlık prefab’ı eklenmiş olur.
Prefabı Item_Keycard olarak yeniden adlandır.
Yeni prefabın bir örneğini görünüm penceresine sürükleyerek onu dünyaya sürükle. Böylece prefab örneği Anahat Düzenleyicisi’nde seçilebilir hale gelecektir.
Item_Keycard prefabı seçiliyken Ayrıntılar panelinde +Bileşen’e tıkla ve item_component’ı seç. item_component’ı bulmak için listeyi kaydırabilir veya onu sonuçları sınırlandırarak daha hızlı bulmak için arama çubuğuna “item” yazabilirsin.
+Bileşen’e tekrar tıkla ve item_details_component’ı seç. Bu bileşen, eşyayla ilgili metin verilerini depolar.
item_details bileşeninin Ayrıntılar panelinde görüntülenen üç özellik alanı bulunur: Ad, Açıklama ve ShortDescription. Ad alanına bir ad, Açıklama alanına eşyaya dair bir açıklama, ShortDescription alanına ise açıklayıcı kısa bir etiket gir.
+Bileşen’e tekrar tıkla ve item_icon_component’ı seç.
Ayrıntılar panelinde item_icon_component’ı genişlet. 2D bir görsel seçmen gerekir. Bu görsel, oyunun kullanıcı arayüzünde (örneğin, oyuncu çantasında) eşyayı temsil etmek üzere gösterilen görsel olacaktır.
Hiçbiri karesinin yanındaki açılır menüye tıklayarak bir bağlam menüsü aç ve Arama çubuğuna görselinin adının bir kısmını yaz. Bu örnekte T_Icon_Keycard.png adlı bir PNG görseli kullanıyoruz.
Arama sonuçlarında görseli seç.
+Bileşen’e tekrar tıkla ve mesh_component’ı seç. Bu örnek için Düzlem’i seç.
Bu işlem, eşyana bir düzlem örgüsü ekleyecektir. Ayarlarına bağlı olarak, bu düzlem başlangıçta çok büyük olabilir. Düzlemi bir anahtar kartı boyutunda olacak şekilde yeniden boyutlandırmak için aşağıdaki adımları izle.
Görünüm penceresinin üst kısmındaki araç çubuğunda Ölçek aracını seç. Ölçek aracına geçmek için R tuşuna da basabilirsin.
Ölçek aracının sağ tarafında yer alan Ölçek için Önayarlı Oran açılır menüsüne tıkla. Bunu 0,0625 olarak ayarla. Bu, düzlemi bir anahtar kartını temsil edecek şekilde çok küçük bir boyuta indirmene olanak sağlar.
+Bileşen’e tekrar tıkla ve fort_item_pickup_component’ı seç. Bu bileşen eklendiğinde Fortnite eşyalarının tüm fonksiyonları eklenir:
Yerden eşya almak için bir animasyon ve eşya bırakmak için bir animasyon
Çantaya bir eşya eklemek için etkileşim
Bir oyuncu eşyaya baktığında gösterilen, varsayılan bir eşya widget’ı
Bir eşya alındığında eşyanın örgüsü devre dışı bırakılır
Bir eşya bırakıldığında eşyanın örgüsü etkinleştirilir
Artık basit bir özel anahtar kartı prefabına sahip olduğuna göre, bu eşyayı benzersiz hale getirecek özel bir Verse bileşeni oluşturabilirsin. Böylece bu anahtar kartının kilitli bir kapıyı açıp açmadığını görmek için anahtar kartı Verse koduyla kontrol edilebilir.
Özel Bir Verse Bileşeni Oluştur
Normalde, çok sayıda Verse kod dosyası olan büyük bir projede özel bir bileşen için yeni bir Verse dosyası oluşturman gerekir. Bunu yapmak için aşağıdaki adımları izle.
Bu eğitimdeki örnek küçük olduğundan Verse dosyasında özel keycard_gameplay_device cihazı için özel keycard_item_component bileşeni tanımlanmıştır. Bu adımlar için Oynanış İçin Verse Kodunu Yaz bölümüne bak.
Yeni anahtar kartı eşyan seçiliyken Ayrıntılar panelinde +Bileşen’e tıkla ve Yeni Verse Bileşeni’ni seç. Verse Bileşeni Oluştur penceresi açılır.
Verse Gezgini üzerinden yeni bir Verse dosyası ekleyerek de bir Verse bileşeni oluşturabilirsin.
Şablon Seç altında Scene Graph Bileşeni’ni seç.
Alttaki Bileşen Adı alanına keycard_item_component yaz. Ardından Oluştur’a tıkla.
Ayrıntılar panelinde, +Bileşen’e tıkla ve Arama çubuğuna “anahtar kartı” yaz. Yeni Verse bileşeninin listelenmiş olduğunu göreceksin, dolayısıyla onu özel anahtar kartı eşyana eklemek için seç.
Menü çubuğunda, Verse > Verse Gezgini’ne tıkla. Yeni Verse bileşenini bul, ona sağ tıkla ve Visual Studio Code’da Aç’ı seç.
Oynanış İçin Verse Kodunu Yaz
Özel bir eşya (anahtar kartı) oluşturduğun ve oyuncunun çantasında özel anahtar kartı olduğunda bir cihazı tetiklemek istediğin için bunu gerçekleştirmek üzere bir Verse cihazı oluşturman gerekir.
Menü çubuğunda Verse > Verse Gezgini’ne git. Verse Gezgini, Anahat Düzenleyicisi’nin yanındaki bir sekmede açılacaktır.
Verse Gezgini’nde proje adına sağ tıkla ve Projeye yeni Verse dosyası ekle’yi seçerek Verse Kodu Oluştur penceresini aç.
Verse Kodu Oluştur penceresinde Şablon Seç bölümünün altında Verse Cihazı’na tıklayarak onu seç. Cihaz Adı alanına keycard_gameplay_device yaz. Ardından Verse dosyasını oluşturmak için Oluştur’a tıkla.
Verse Gezgini’nde yeni Verse cihazına çift tıklayarak dosyayı Visual Studio (VS) Code’da aç. Aşağıdakilerin tamamının, kodun üst satırına eklendiğinden emin ol.
Verseusing { /Fortnite.com/Devices } using { /Fortnite.com/Itemization } using { /Verse.org/Simulation } using { /Verse.org/SceneGraph } using { /Verse.org/Random } using { /UnrealEngine.com/Itemization } using { /UnrealEngine.com/Temporary/Diagnostics }Ardından özel eşya bileşenini tanımlayan kodu ekle.
Verse# KEYCARD ITEM COMPONENT keycard_item_component := class(item_component) :Hedef aracının kök envanterini bulmamızı sağlayacak bir yardımcı fonksiyon ekleyebiliriz:
Verse# Helper function that gets the first descendant inventory component from an agent. # This will be the root inventory. GetAgentInventory(Agent:agent)<decides><transacts>:inventory_component= TargetInventory := (for (I : Agent.FindDescendantComponents(inventory_component)) { I })[0]Ardından
creative_device’ın bir alt sınıfı olarak özel Verse cihazını tanımla. Bunun altında, Bölge ve Kilit cihazları için düzenlenebilir bir özellik ayarla. Bunu yapmak, editörde Bölge veya Kilit cihazının belirli bir örneğini seçmene olanak tanır (iki Bölge cihazın ve iki Kilit cihazın olduğu için önemlidir).Verse# DEVICE //// GAMEPLAY keycard_gameplay_device := class(creative_device) : # Use a volume_device to be able to check when a player approaches @editable VolumeDevice:?volume_device = false # The lock device is attached to a wall/door prop. This can be activated to lock/unlock the door it is attached to. @editable LockDevice:?lock_device = falseŞimdi, Bölge cihazının mevcut olup olmadığını görmek için sorguyu kullanacak ve Bölge cihazının Aracı Girdiğinde ve Aracı Çıktığında olaylarına bağlanacaksın.
Verse# Subscribe to the entry and exit events on the Volume to determine when a player/agent approaches. OnBegin<override>()<suspends>:void= if: TargetVolume := VolumeDevice? then: TargetVolume.AgentEntersEvent.Subscribe(OnAgentEntersEvent) TargetVolume.AgentExitsEvent.Subscribe(OnAgentExitsEvent)Oyuncunun çantasında özel anahtar kartı olup olmadığını görmek için oyuncunun çantasını kontrol etmen gerekir. Bu işlem,
keycard_item_componentbileşenine sahip olan bir şey olup olmadığı kontrol edilerek yapılır. Bu kod ayrıca Kilit cihazını açmak içinkeycard_item_componentbileşeninin mevcut olmasını gerektirir.VerseOnAgentEntersEvent(Agent:agent):void= # Get the inventory from the player that is entering. if(TargetInventory := GetAgentInventory[Agent]): # Check the item in the inventory, if it has the keycard_item_component, proceed for(item : TargetInventory.FindItems(), KeycardComponent := item.GetComponent[keycard_item_component]) # If there is a valid lock_device, then this opens the door. if(TargetDoorLock := LockDevice?):Son olarak, birden fazla oyuncu varsa ve bir oyuncu anahtar kartına sahipse bu kod kilidin açık kalmasını sağlayacaktır. Ancak anahtar kartına sahip olan oyuncu bölge dışına çıkarsa Kilit tekrar kapatılır.
VerseOnAgentExitsEvent(Agent:agent):void= # Start by assuming that no one has the required keycard_item_component. var AgentWithKeycardInVolume:logic = false if(TargetVolume := VolumeDevice?): # Get the Agents that are inside the volume_device as an array. for(TargetAgent:TargetVolume.GetAgentsInVolume()): # Use the same check to see if any of the agents in the volume_device have a keycard_item_component.
Verse kodu parçacığının tamamını aşağıda görebilirsin.
using { /Fortnite.com/Devices }
using { /Fortnite.com/Itemization }
using { /Verse.org/Simulation }
using { /Verse.org/SceneGraph }
using { /UnrealEngine.com/Itemization }
using { /UnrealEngine.com/Temporary/Diagnostics }
# KEYCARD ITEM COMPONENT
keycard_item_component := class(item_component) :