Bir kaybolan platformlar serisi, engelli parkurlar gibi platformlu oyun modlarının başlıca unsurları arasındadır. Bunlar oyuncuların platformlar arasındaki sıçrayışları zamanlamasını gerektirir, aksi takdirde oyuncu düşer ve baştan başlamak zorunda kalır.
Bu eğitimi takip ederek Fortnite İçin Unreal Editor (UEFN) içinde Verse ile oluşturulmuş bir cihazı kullanarak sırayla görünen ve kaybolan bir platform serisi oluşturmayı öğreneceksin.
![]() |
![]() |
Kullanılan Verse Dili Özellikleri
array
:array
türü ile platform referanslarını hızlı erişim için ve kod yinelemelerini önlemek amacıyla bir arada depolayabilirsin.loop
: Platformun görünme ve kaybolma döngüsü, oyun başladığında başlamalı ve oyun bitene kadar devam etmeli. Bu örnekte bu davranışın Verseloop
ifadesi ile nasıl oluşturulacağı gösteriliyor.block
:block
ifadesiyle birden fazla ifadeyi sırayla yürütülecek şekilde gruplandırabilirsin.for
:for
ifadesiyle platform serilerini etkileyebileceğin şekilde yineleyebilirsin.sync
:sync
ifadesi ve yapılandırılmış eşzamanlılık ile aynı anda birden fazla ifadeyi yürütebilirsin.
Kullanılan Verse API’leri
Sleep()
:Sleep()
API'si ile platformların görünmezlik ve görünürlük durumlarında ne kadar süreyle kalacağını seçebilirsin.- Düzenlenebilir Özellikler: Platformların davranışı için üç gecikme ve platformlara dört cihaz referansı olmak üzere 7 Verse ile oluşturulmuş bir cihaz özelliği UEFN'de kullanıma sunulur, böylece bu özellikleri Editör'de düzenleyebilirsin.
Talimatlar
Düzenli aralıklarla kaybolan ve görünen bir platform serisi oluşturmak için aşağıdaki adımları izle. Tam kod, referans olması için bu kılavuzun sonuna eklenmiştir.
Bölümü Ayarlama
Bu örnekte aşağıdaki nesne ve cihazlar kullanılıyor.
- 1 adet Oyuncu Doğma Karesi Cihazı: Bu cihaz, oyuncunun oyun başlangıcında nerede doğacağını belirler.
- 7 adet Renk Değiştiren Kare Cihazı: Cihazın görünürlüğünü değiştirmek için
Hide()
veShow()
gibi davranışlara sahip olduğundan, Renk Değiştiren Kare cihazı oyuncu etkileşimli platformlar oluşturmak için mevcut en iyi seçenektir. - 2 adet zemin karesi: Oyuncu için başlangıç ve bitiş kareleri ve oyuncunun geçmesi gereken bir boşluk oluşturmaya yarar.
Bölümünü ayarlamak için şu adımları izle:
- Bir Renk Değiştiren Kare cihazını yerden yüksek bir konuma yerleştir, böylece oyuncu kaybolan platformdan zamanında atlamazsa düşecektir. Anahat Düzenleyicisi panelinde cihazı Platform1 olarak adlandır.
-
Cihazın Ayrıntılar panelini açmak için Anahat Düzenleyicisi panelinde Platform1’i seç.
-
Gelişmiş kısmındaki Ayrıntılar panelinde Oyun Sırasında Çarpışma ayarını Yalnızca Görünürken olarak ayarla.
-
Çoğaltılanları sekansa yerleştirerek altı platform daha oluşturmak için bölümde bulunan Renk Değiştiren Kare cihazını çoğalt. Cihazları Platform2, Platform3, Platform4, Platform5, Platform6 ve Platform7 olarak adlandır.
-
Oyuncunun sıçrayışlarını zamanlamak zorunda kalması için iki zemin karesini her bir Renk Değiştiren Kare cihazının iki tarafına da yerleştir. Oyuncu, karşı tarafa geçmek için zar zor yetecek zamana sahip olmalıdır.
-
Oyuncu Doğma Karesi cihazını ilk önce görünecek platforma en yakın zemin karesinin üzerine yerleştir.
Bölümün şu şekilde görünmelidir:

Cihazı Oluşturma
Bu örnekte platformların görünürlükle görünmezlik arasındaki geçiş davranışını tanımlamak için Verse ile oluşturulmuş bir cihaz kullanılır. Verse kullanarak bu cihazı oluşturmak için aşağıdaki adımları izle:
-
platform_series adlı yeni bir Verse cihazı oluştur. Verse’te yeni bir cihazın nasıl oluşturulacağını öğrenmek için Verse’ü Kullanarak Kendi Cihazını Yarat bölümüne bakabilirsin.
-
UEFN araç çubuğunda Verse'e tıkla, ardından kodunu derlemek için Verse Kodu Oluştur seçeneğine tıkla.
-
Cihaz kodu hatasız bir şekilde derlenirse Verse ile oluşturulan cihaz, projenin İçerik klasörünün CreativeDevices klasöründe görünür.
-
platform_series cihazını İçerik Tarayıcısı'ndan bölüme sürükle.
UEFN’de Cihaz Özelliklerini Düzenleme
Bu bölümde, editörde özelleştirebilmek için yedi cihaz özelliğinin UEFN'de nasıl kullanıma açılacağı gösteriliyor:
- Platformların ne kadar süreyle görünmez/görünür olması gerektiğini depolayacak
HeadStart
,AppearDelay
veDisappearDelay
adlı üç kayan sayı sabiti. - Bölüme yerleştirdiğin dört Renk Değiştiren Kare cihazının dört cihaz referansı.
Kodundaki AppearDelay
gibi sabitleri UEFN’de kullanıma açmak faydalı olabilir. Böylece tasarım değişikliklerini yinelerken akış düzenine uyan zamanlamaları bulabilmek için bunların değerlerini UEFN’de hızlıca özelleştirebilirsin.
Önceki kısımda oluşturduğun platform_series cihazından bu özellikleri kullanıma açmak için aşağıdaki adımları izle.
- Verse Gezgini’ni açıp platform_series.verse dosyasına çift tıklayarak kodu Visual Studio Code ile aç.
- Düzenlenebilir özellikleri etkinleştirmek için dosyanın en üst kısmına
using { /Verse.org/Simulation }
ifadesini ekle.using { /Fortnite.com/Devices } using { /Verse.org/Native } using { /Verse.org/Simulation } using { /UnrealEngine.com/Temporary/Diagnostics } log_platform_series := class(log_channel){} platform_series := class<concrete>(creative_device): Logger : log = log{Channel := log_platform_series}
platform_series
sınıf tanımına aşağıdaki alanları ekle:HeadStart
düzenlenebilir alanı, platformlar görünmeye başladıktan sonra ve platformlar kaybolmaya başlamadan önce kaç saniye süreyle bekleneceğini belirtir. Sabiti, 2,45 saniyeyi temsil eden2.45
değeriyle başlat.@editable HeadStart : float = 2.45
AppearDelay
düzenlenebilir alanı, bir sonraki platform görünmeden önce kaç saniye süreyle bekleneceğini belirtir. Sabiti, 0,98 saniyeyi temsil eden0.98
değeriyle başlat.@editable AppearDelay : float = 0.98
DisappearDelay
düzenlenebilir alanı, bir sonraki platform kaybolmadan önce kaç saniye süreyle bekleneceğini belirtir. Sabiti, 1,11 saniyeyi temsil eden1.11
değeriyle başlat.@editable DisappearDelay : float = 1.11
*
Platform
alanı, periyodik olarak kaybolup görünecek olan platformu temsil eder. Bu alanıcolor_changing_tiles_device{}
ile başlat.@editable Platform : color_changing_tiles_device = color_changing_tiles_device{}
platform_series
sınıf alanların şu anda aşağıdaki gibi görünmelidir:platform_series := class<concrete>(creative_device): Logger : log = log{Channel := log_platform_series} @editable HeadStart : float = 2.45 # Platformlar görünmeye başladıktan sonra ve platformlar kaybolmaya başlamadan önce kaç saniye süreyle bekleneceği. @editable AppearDelay : float = 0.98 # Bir sonraki platform görünmeden önce kaç saniye süreyle bekleneceği. @editable DisappearDelay : float = 1.11 # Bir sonraki platform kaybolmadan önce kaç saniye süreyle bekleneceği. @editable Platform : color_changing_tiles_device = color_changing_tiles_device{}
- Kodu Visual Studio Code içinde kaydet.
-
UEFN araç çubuğunda, bölümdeki platform_series cihazını güncellemek için Verse'e tıklayıp ardından Verse Kodu Oluştur'a tıkla.
- UEFN’deki Anahat Düzenleyicisi panelinde cihazın Ayrıntılar panelini açmak için platform_series cihazını seç.
-
- Ayrıntılar panelindeki Platform Serisi altında Platform'u bölüme eklediğin Renk Değiştiren Kare cihazı olarak ayarlamak için obje seçiciye tıklayıp görünüm penceresinde Renk Değiştiren Kare cihazını seç.
Platformu Gizleme ve Gösterme
Bölümü ve birinci platformu ayarladığına göre, artık platformu gösterme ve gizleme fonksiyonunu ekleyebilirsin. Bu davranışı platform_series cihazına eklemek için aşağıdaki adımları izle:
color_changing_tiles_device
sınıfının görünürlüğünü açıp kapatmak için iki metot vardır:Show()
veHide()
. Bu metotları kod dosyanda bulunanOnBegin
metodu içindekiPlatform
üzerinde çağır:OnBegin<override>()<suspends> : void = Platform.Hide() # Platform görünmez hale gelir Platform.Show() # Platform görünür hale gelir
Bu kodu çalıştırdığında,
Hide()
veShow()
çağrıları birbirinin hemen ardından gerçekleştiği için platformun kaybolup yeniden belirdiği görülmeyecek.- Platformun görünür veya görünmez durumlarında daha uzun süre kalması için
Sleep()
fonksiyonunu kullanarakHide()
veShow()
çağrıları arasına bir gecikme ekleyebilirsin.Sleep()
fonksiyonu bir yordamın yürütülmesini askıya alır, burada fonksiyona birfloat
bağımsız değişkeni ileterek yürütmenin askıya alınacağı süreyi (saniye olarak) belirtebilirsin.OnBegin<override>()<suspends> : void = Platform.Hide() # Platform görünmez hale gelir Sleep(DisappearDelay) # Sleep(DisappearDelay) bir sonraki ifadeye geçmeden önce DisappearDelay saniye süresi kadar bekler. Platform.Show() # Platform görünür hale gelir
Bu kodu çalıştırırsan
Platform
, oyunun geri kalanı boyunca görünür hale gelmeden önce 1,11 saniye (DisappearDelay
ile belirlenen süre) boyunca görünmez olur.
Birden Fazla Platformu Gizleme ve Gösterme
- Bölümde kaybolmasını istediğin her platform için önceki adımda gösterilen kodu tekrarlayabilirsin. Başka bir yöntem de tüm cihaz referanslarını depolamak için bir dizi oluşturmaktır ve platformları etkilemek istediğinde tek yapman gereken, her biri için kodu çoğaltmak yerine diziyi yinelemektir.
platform_series
sınıf tanımındaPlatform : color_changing_tiles_device
alanınıPlatforms : []color_changing_tiles_device
olarak değiştir. Platformları sırayla yinelemek için bu diziyi kullanacaksın. Değişkeni boş bir dizi olanarray{}
varsayılan değeriyle başlat.
@editable Platforms : []color_changing_tiles_device = array{}
- UEFN’deki Anahat Düzenleyicisi panelinde cihazın Ayrıntılar panelini açmak için platform_series cihazını seç.
- Ayrıntılar panelindeki Platform Serisi altında Platformlar’ı bölüme eklediğin Renk Değiştiren Kare cihazlarına ayarla. "Öğe Ekle" düğmesiyle diziye yeni öğeler ekle, ardından obje seçiciye tıkla ve görünüm penceresindeki Renk Değiştiren Kare cihazlarını seç. Cihazların, bunları çalıştırmak istediğin sıraya uyduğundan emin ol:
- Platform1
- Platform2
- Platform3
- Platform4
- Platform5
- Platform6
- Platform7
- Dizinin öğelerini yinelemek için
for
ifadesini kullanabilirsin.for
ifadesi sana bir dizin-değer eşleştirmesi vermek içinX -> Y
desenini kullanır. Dizin sol kısma (X
), değer ise sağ kısma (Y
) bağlıdır. BuradaX
değeri platformun numarası/dizindir veY
değeri dizinden alınan her bir platform referansıdır.OnBegin<override>()<suspends> : void = for (PlatformNumber -> Platform : Platforms): Logger.Print("Platform{PlatformNumber} şimdi gizlendi.") Platform.Hide() Sleep(DisappearDelay) for (PlatformNumber -> Platform : Platforms): Logger.Print("Platform{PlatformNumber} şimdi gösteriliyor.") Platform.Show() Sleep(AppearDelay)
HideAllPlatforms()
veShowAllPlatforms()
adlı iki yeni metot oluştur ve her birine önceki adımda verilenfor
ifadelerinden birini ekle: bir tanesi tüm platformları gizlemek, diğeri tüm platformları göstermek için.Sleep()
fonksiyonunu kullandığın için metotların<suspends>
efektine sahip olması gerekir.OnBegin<override>()<suspends> : void = HideAllPlatforms() ShowAllPlatforms() HideAllPlatforms()<suspends> : void = for (PlatformNumber -> Platform : Platforms): Logger.Print("Platform{PlatformNumber} şimdi gizlendi.") Platform.Hide() Sleep(DisappearDelay) ShowAllPlatforms()<suspends> : void = for (PlatformNumber -> Platform : Platforms): Logger.Print("Platform{PlatformNumber} şimdi gösteriliyor.") Platform.Show() Sleep(AppearDelay)
Bu kodu çalıştırırsan platformların hepsi önce sırayla kaybolur ve sonra aynı sırayla yeniden görünür. 1. Oyun devam ettiği sürece platformların kaybolmasını ve yeniden görünmesini sürdürmek için
loop
ifadesini kullanarak bu çağrıları tekrarlayabilirsin. Bu örnekte, platformların görünürlüğünü oyun devam ettiği sürece değiştirmek istiyorsun, bu nedenleloop
’tan çıkmak için birbreak
ifadesi eklemene gerek yok çünkü oyun bitene kadar devam etmesini istiyorsun.OnBegin<override>()<suspends> : void = loop: HideAllPlatforms() ShowAllPlatforms()
Bu kodu çalıştırırsan platformların hepsi önce sırayla kaybolur, sonra aynı sırayla yeniden görünür ve bu döngü oyun bitene kadar devam eder.
Kaybolan ve Yeniden Görünen Platformları Senkronize Etme
Oyuncuyu karelerin üzerinde zıplarken daha hızlı hareket etmeye zorlamak istersen sıranın sonraki bölümlerinde yer alan platformlar görünmeye devam ederken platformların kaybolmasını başlatabilirsin. Bu şekilde oyuncu, karelerin üzerinde acele etmek zorunda kalacak, aksi takdirde düşecektir. Bu davranışı oluşturmak için her iki yordamın da (ShowAllPlatforms()
ve HideAllPlatforms()
) aynı zamanda çalışması, ikincinin birinciden geride kalması gerekir. Böylece oyuncu, bir sonraki platform kaybolmadan önce platforma atlayabilmek için erken bir başlangıç yapabilir.
Platformların tümünün aynı anda gizlenmesi ve gösterilmesi için aşağıdaki adımları izle.
HideAllPlatforms()
veShowAllPlatforms()
rutinlerinin eşzamanlı olarak (aynı anda) çalışması içinsync
ifadesini kullanabilirsin.sync
ifadesi kod blokunda iki veya daha fazla asenkron ifadeyi yürütür ve devam etmeden önce tüm ifadelerin tamamlanmasını bekler.OnBegin<override>()<suspends> : void = loop: sync: HideAllPlatforms() ShowAllPlatforms()
Bu kodu çalıştırırsan bir platform eşzamanlı olarak gizlenir ve gösterilir. Oyuncunun karşıya zıplaması için zamanı olabilmesi adına birinci platformun (ve ondan sonra gelenlerin hepsinin) gizlenmeden önce bir süre görünür olması gerektiğinden bu seçeneğin tercih edilmesi istenmez.
- Oyuncunun erken bir başlangıç yapabilmesi amacıyla platformların kaybolmaya başlamasını geciktirmek için
Sleep()
rutinini kullanman gerekir.sync
ifadesi kod blokundaki tüm ifadeleri aynı anda yürüttüğündenSleep()
veHideAllPlatforms()
rutinlerinin sırayla yürütülmesi ve böylece platformlar kaybolmaya başlamadan önce bir gecikme olması içinblock
ifadesini kullanman gerekir.OnBegin<override>()<suspends> : void = loop: sync: ShowAllPlatforms() block: Sleep(HeadStart) HideAllPlatforms()
- Kodu kaydet ve Verse'e tıklayıp ardından kodu derlemek için Verse Kodu Oluştur'a tıkla.
-
Bölümün oynanış testini yapmak için UEFN araç çubuğunda Oturumu Başlat butonuna tıkla.
Şimdi bölüme oynanış testi uyguladığında platformlar sırayla kaybolmaya başlar, sıranın sonraki bölümlerinde yer alan platformlar ise yeniden görünür ve oyun devam ettiği sürece bu desen devam eder.

Tam Kod
Aşağıdaki kod, sırayla görünen ve kaybolan bir platform serisi oluşturmaya yarayan tam koddur.
using { /Fortnite.com/Devices }
using { /Verse.org/Native }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
log_platform_series := class(log_channel){}
platform_series := class<concrete>(creative_device):
Logger : log = log{Channel := log_platform_series}
@editable
HeadStart : float = 2.45 # Platformlar görünmeye başladıktan sonra ve platformlar kaybolmaya başlamadan önce kaç saniye süreyle bekleneceği.
@editable
AppearDelay : float = 0.98 # Bir sonraki platform görünmeden önce kaç saniye süreyle bekleneceği.
@editable
DisappearDelay : float = 1.11 # Bir sonraki platform kaybolmadan önce kaç saniye süreyle bekleneceği.
@editable
Platforms : []color_changing_tiles_device = array{} # Görünecek/kaybolacak platformların sıralı hali.
OnBegin<override>()<suspends> : void =
<#
Verse’ün yapılandırılmış eşzamanlılığı, eşzamanlı işlemleri ve nasıl çalışmaları gerektiğini açıklamayı son derece anlaşılır hale getirir.
Bu durumda iki eş yordam vardır:
- Biri hemen başlayıp platformları dizide depolandıkları sırayla görünür hale getirir
- Diğeri aynı platformları dizide depolandıkları sırayla görünmez hale getirmeden önce başlamayı bekler
#>
loop:
sync:
ShowAllPlatforms() # Bu eş yordam hemen başlar ve blok ifadesiyle aynı anda yürütülür.
block: # block ifadesi ShowAllPlatforms() ile aynı anda hemen başlar. Bu kod bloğundaki tüm ifadeler sırayla yürütülür.
Sleep(HeadStart) # HideAllPlatforms() yürütülmeden önce HeadStart saniye süresi kadar bekler.
HideAllPlatforms() # HeadStart başladıktan sonra bu eş yordam yürütülür.
ShowAllPlatforms()<suspends> : void =
for (PlatformNumber -> Platform : Platforms):
Logger.Print("Platform{PlatformNumber} şimdi gösteriliyor.")
Platform.Show()
Sleep(AppearDelay)
HideAllPlatforms()<suspends> : void =
for (PlatformNumber -> Platform : Platforms):
Logger.Print("Platform{PlatformNumber} şimdi gizlendi.")
Platform.Hide()
Sleep(DisappearDelay)
Kendi Kendine Yapabileceklerin
Bu eğitimi tamamlayarak, bir platform serisinin görünürlüğünü oyun devam ettiği sürece değiştiren bir cihazı Verse kullanarak nasıl oluşturacağını öğrendin.
Öğrendiklerini kullanarak aşağıdakileri dene:
- Platformların görünme ve kaybolma sırasını değiştir.
- Fonksiyonları Nesne Yürütücü Cihazı gibi diğer cihaz türlerinde düzenli aralıklarla çağırmak için aynı kavramları uygula.