Sabitler
Sabit, bir değerin depolandığı bir konum olup sabitin değeri programın çalışma zamanı boyunca değişemez.
Bir sabit oluşturmak için tanımlayıcısını ve türünü belirtmen gerekir. Bu işleme bir sabit tanımlama adı verilir. Ayrıca sabit için bir değer belirtmen gerekir, bu işleme de bir sabiti başlatma adı verilir.
Sabit tanımlandığında başlatılmalıdır ve kullanılabilmesi için tanımlanması zorunludur.
Sabit oluşturma sözdizimi aşağıdaki gibidir:
Identifier : type = expressionBir fonksiyonda tanımlanan sabitler, türü hesaba katmayabilir:
Identifier := expressionTür hesaba katılmazsa sabitin türü, sabiti başlatmak için kullanılan ifadeden elde edilir. Yalnızca yerel sabitler türü dışarıda bırakabilir çünkü tür sabitin nasıl kullanılabileceğini açıklar. Bir modüldeki sabit, modül arayüzünün sabiti içeren kısmını oluşturur. Tür olmadan bu arayüz belirsiz olacaktır.
Aşağıdaki örnekte her bir döngü yinelemesinde rastgele bir sayı oluşturulur ve bu sayı RandomNumber sabitini başlatmak için kullanılır. Rastgele sayı yalnızca yirmiden az olması durumunda döngüden çıkar.
loop:
Limit := 20
# For local constants, the type can be omitted.
RandomNumber : int = GetRandomNumber()
# Providing the type explicitly can make the code easier to read.
if (RandomNumber < Limit):
breakHer döngü yinelemesinde RandomNumber adlı yeni bir sabit oluşturulur ve değer olarak GetRandomNumber() sonucu atanır.
Değişkenler
Verse’te yukarıda açıklanan sabitlere ek olarak değişkenler bulunur.
Değişkenler sabitlere benzer ancak var anahtar sözcüğüyle tanımlanır. Yani değerlerini istediğin noktada değiştirebilirsin.
Örneğin,
var MaxHealthUpgrade : int = 10Bir tamsayı değişkendir ve değeri her zaman 10 olmayabilir.
Değişken oluşturma sözdizimi aşağıdaki gibidir:
var Identifier : type = expressionDeğişkenler için türün açıkça belirtilmesi zorunludur.
Bir değişken oluşturduktan sonra aşağıdaki sözdizimiyle değişkene farklı bir değer atayabilirsin:
set Identifier = expressionBir değişkeni değiştirmek için = dışında başka çeşitli işleçler de kullanılabilir. Örneğin,
var X:int = 0
set X += 1
set X *= 2Global Değişkenler
Bir modülde tanımlanmış olan bir değişken, o değişkenin kapsam dahilinde olduğu durumlarda çalışmakta olan tüm oyun örnekleri için globaldir.
Verse’te bir modül kapsamlı değişken tanımlamanın bir yolu weak_map(session, t) türünü kullanmaktır. Burada anahtar türü, oturum ya da geçerli Fortnite adası örneğinin türüdür, değer türü ise herhangi bir t türüdür. weak_map hakkında ayrıntılı bilgi için Eşleştirme bölümüne bak.
Aşağıdaki örnekte, ExampleFunction() her çağrıldığında artan GlobalInt adlı bir global tamsayı değişkeninin nasıl oluşturulduğu gösterilmiştir.
using { /Verse.org/Simulation } # For session
var GlobalInt:weak_map(session, int) = map{}
ExampleFunction():void=
X := if (Y := GlobalInt[GetSession()]) then Y + 1 else 0
if:
set GlobalInt[GetSession()] = X
Print("{X}")Anahtar olarak oturum türünü kullanan modül kapsamlı değişkenler aşağıdaki sınırlamalara sahiptir:
Yalnızca içinde bulunduğun oturumun değerlerine erişebilirsin, başka bir oturumun değerlerine erişemezsin.
weak_mapmodül kapsamlı değişkeni tamamen okunamaz veya yazılamaz. Bu nedenle tüm oturumların değerlerini okumak veya üzerine yazmak mümkün değildir.Bir
weak_mapdeğişkeninin değerlerini yineleyemez ya da o anda kaç tane oturumun etkin olduğunu göremezsin çünküweak_mapdeğişkeninin bir uzunluğu yoktur.
Kalıcı Veriler
Modül kapsamındaki değişkenler, oturum ile ilişkili olanlar haricinde süreklilik gerektirir; bu durumda verilerin geçerli oyunla sınırlı olmayacak şekilde depolanması gerekir.
Verse’te weak_map(player, t) türünü kullanarak kalıcı bir değişken tanımlayabilirsin. Kalıcı t ile gösterilen herhangi bir tür, bir oyuncu için depolanabilir ve erişilebilir. Ayrıca veriler sonraki oyun oturumlarında görülebilir. Bir oyuncu bir oyuna katıldığında onun önceden kaydedilmiş olan verileri, weak_map(player, t) türündeki tüm modül kapsamlı değişkenlere yüklenir.
Aşağıdaki örnekte, global "weak_map" değişkeni MySavedPlayerData, anahtar olarak oyuncu türünü, değer olarak ise bir tamsayıyı kullanır. Kalıcı verilerini tanımladıktan sonra her oyuncu için verileri başlatman gerekir. Bunu, söz konusu oyuncu için zaten depolanmış veri olup olmadığını kontrol edip ardından weak_map’e oyuncuyu ve başlangıç değerini ekleyerek yapabilirsin.
using { /Fortnite.com/Devices }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Verse.org/Simulation }
var MySavedPlayerData:weak_map(player, int) = map{}
# A Verse-authored creative device that can be placed in a level
persistence_example := class(creative_device):
# Runs when the device is started in a running game
Anahtar olarak oyuncu türünü kullanan modül kapsamlı değişkenler aşağıdaki sınırlamalara sahiptir:
Oyuncunun kalıcı verilerine erişilmesine yalnızca oyuncu geçerli oyunda olduğunda izin verilir.
Bir oyuncu bir oyundan ayrılırsa veya geçerli oturumda bulunmuyorsa artık o oyun oturumunda onun verilerini depolayamazsın veya bu verilere erişemezsin. Oyuncu geri dönerse veya aynı oyunu oynarsa onun verilerine erişebilir ve bu verileri güncelleyebilirsin.
Modül kapsamlı
Weak_maptamamen okunamaz veya yazılamaz. Bu nedenle tüm oyuncuların değerlerini okumak veya üzerine yazmak mümkün değildir.Bir
weak_mapdeğişkeninin değerlerini yineleyemez ya daweak_map’te kaç oyuncunun kaydı olduğunu göremezsin çünküweak_mapdeğişkeninin bir uzunluğu yoktur.Tek bir adada en fazla iki kalıcı değişken, yani anahtar türü
oyuncuolan ikiweak_mapdeğişkeni bulunabilir.Maksimum kalıcı değişken sınırına ulaşılmışsa en az bir kalıcı değişkenin
weak_mapdeğeri bir sınıf olmalıdır.Tek bir
weak_mapkaydının her oyuncu için maksimum veri boyutu 128 kilobayttır (KB).
Verse’te süreklilik hakkında daha ayrıntılı bilgi için Verse’te Kalıcı Veri Kullanımı bölümüne bakabilirsin.