Bu bölümde daha önce oluşturduğun oyuncu ve takımların çalışma zamanında nasıl bulunacağı gösteriliyor.
Sınıf Üyelerini Tanımlama
- Verse Gezgini menüsünü aç ve triad_infiltration_game.verse dosyasına çift tıklayarak kodu Visual Studio Code ile aç.
- Dosyanın en üstüne
using { /Verse.org/Random }ekleyerekShuffle()fonksiyonuna eriş. Dengelemenin öncesinde oyuncuların takımlarını rastgele karıştırmak için bunu kullanacaksın. Ayrıca oyuncular içinRespawn()fonksiyonuna erişmek amacıylausing { /Fortnite.com/FortPlayerUtilities }ifadesini ekle; bu fonksiyonu daha sonra oyuncuları oyunun başında doğma alanlarına ışınlamak için kullanacaksın.using { /Fortnite.com/Devices } using { /Fortnite.com/FortPlayerUtilities } using { /Verse.org/Simulation } using { /Verse.org/Random } using { /UnrealEngine.com/Temporary/Diagnostics } triad_infiltration_gamesınıf tanımına aşağıdaki alanları ekle:MaximumInfiltrators,MaximumAttackersveMaximumDefendersadlı üç düzenlenebilir tamsayı.MaximumInfiltratorsdeğerini 2,MaximumAttackersveMaximumDefendersdeğerlerini ise 4 olarak başlat. Bu değerler her bir takımdaki maksimum oyuncu sayısını takip eder. Takımları dinamik bir şekilde dengelemek için bu sayıları kullanacaksın. Bu sayıları, test amacıyla ve oyunda ilgi çekici varyasyonlar oluşturmak için değiştirebilirsin.triad_infiltration := class(creative_device): # Oyuncuların bir takıma katılamamasını önlemek için maksimum sayıyı ayarlamalısın # Bunun için maksimum oyuncu sayısını, ada ayarlarında tüm Maximum(Team) değişkenlerinin toplamına ayarlamalısın. # Casuslar Takımındaki maksimum oyuncu sayısı. @editable MaximumInfiltrators:int = 2 # Saldırganlar Takımındaki maksimum oyuncu sayısı. @editable MaximumAttackers:int = 4 # Savunmacılar Takımındaki maksimum oyuncu sayısı. @editable MaximumDefenders:int = 4TeamsAndTotalsadlı birmapdeğişkeni. Bu değişken, oyuncu takımlarını ilgili takımdaki maksimum oyuncu sayısıyla eşleştirir.# Casuslar Takımındaki maksimum oyuncu sayısı. @editable MaximumInfiltrators:int = 2 # Saldırganlar Takımındaki maksimum oyuncu sayısı. @editable MaximumAttackers:int = 4 # Savunmacılar Takımındaki maksimum oyuncu sayısı. @editable MaximumDefenders:int = 4 # Takımların maksimum oyuncu sayılarıyla eşleştirilmesi. var TeamsAndTotals:[team]int = map{}Teleportersadlı düzenlenebilir bir ışınlayıcı dizisi. Bu dizi, takım dengeleme sonrasında oyuncuları doğma yerlerine ışınlamak için kullanacağın ışınlayıcıların referansını içerir.# Takımların maksimum oyuncu sayılarıyla eşleştirilmesi. var TeamsAndTotals:[team]int = map{} # Oyun başladıktan sonra oyuncuları takımlarının doğma karesine ışınlayan Işınlayıcıların dizisi. @editable Teleporters:[]teleporter_device = array{}WeaponGrantersadlı düzenlenebilir biritem_granter_devicedizisi. Bu dizi, oyunculara doğduklarında bulundukları takıma göre bir silah vermek için gereken eşya vericileri depolar.# Oyun başladıktan sonra oyuncuları takımlarının doğma karesine ışınlayan Işınlayıcıların dizisi. @editable Teleporters:[]teleporter_device = array{} # Her takım için silah vericilerin dizisi. @editable var WeaponGranters:[]item_granter_device = array{}MaybeInfiltrators,MaybeAttackersveMaybeDefendersadlı üç isteğe bağlıteamdeğişkeni. Bu değişkenler, her bir takım için takımların doğru şekilde ayarlandığını kontrol etmeni sağlayan bir referans saklar.# Her takım için silah vericilerin dizisi. @editable var WeaponGranters:[]item_granter_device = array{} # Casuslar takımına referans. var MaybeInfiltrators:?team = false # Saldırganlar takımına referans. var MaybeAttackers:?team = false # Savunmacılar takımına referans. var MaybeDefenders:?team = false- Takımlara ait
Teamsadlı bir değişken dizisi. Bu dizi, oyundaki tüm takımların referansını içerir. Yukarıdaki isteğe bağlı takım değişkenlerini ayarlamak ve dengeleme sırasında oyuncu atanacak takımları bulmak için bu diziyi kullanacaksın.# Casuslar takımına referans. var MaybeInfiltrators:?team = false # Saldırganlar takımına referans. var MaybeAttackers:?team = false # Savunmacılar takımına referans. var MaybeDefenders:?team = false # Oyundaki tüm takımların dizisi. var Teams:[]team = array{}
Çalışma Zamanında Oyuncuları ve Takımları Bulma
OnBegin()içindeTeamsdizisini daha önce Deneyim Ayarları kısmında kurduğun her bir takımla güncelle. Oyun alanındaki tüm takımların bir dizisini almak içinfort_team_collectionAPI’ındanGetTeams()fonksiyonunu kullanabilirsin.OnBegin<override>()<suspends>:void = # Bütün takımları al. set Teams = GetPlayspace().GetTeamCollection().GetTeams()Teamsdizisinde karşılık gelen takımlaraMaybeInfiltrators,MaybeAttackersveMaybeDefendersdeğişkenlerini atayarak her bir takımın referansını kaydet.# Takımları daha sonra başvurmak üzere kaydet. set MaybeInfiltrators = option{Teams[0]} set MaybeAttackers = option{Teams[1]} set MaybeDefenders = option{Teams[2]}- Şimdi üç takımın da doğru şekilde ayarlanıp ayarlanmadığını kontrol edebilirsin.
MaybeInfiltrators,MaybeAttackersveMaybeDefendersbireroptionolduğu için bunların gerçek bir değer içerip içermediğine bakarak bu kontrolü gerçekleştirebilirsin. Gerçek değer içeriyorlarsaTeamsAndTotalsiçindeki her bir takımın değerini ilgili takımın maksimum oyuncu sayısına ayarla.if: Infiltrators := MaybeInfiltrators? Attackers := MaybeAttackers? Defenders := MaybeDefenders? Logger.Print("Üç takımın hepsi bulundu") set TeamsAndTotals[Infiltrators] = MaximumInfiltrators set TeamsAndTotals[Attackers] = MaximumAttackers set TeamsAndTotals[Defenders] = MaximumDefenders Logger.Print("TeamsAndTotals içinde üç takımın hepsi ayarlandı") else: Logger.Print("Bütün takımlar bulunamadı, ada ayarlarında doğru takımları atadığından emin ol.") -
triad_infiltration_gamekodun şu anda aşağıdaki gibi görünmelidir:triad_infiltration_game := class(creative_device): Logger:log = log{Channel := triad_infiltration_log_channel} # Oyuncuların bir takıma katılamamasını önlemek için maksimum sayıyı ayarlamalısın # Bunun için maksimum oyuncu sayısını, ada ayarlarında tüm Maximum(Team) değişkenlerinin toplamına ayarlamalısın. # Casuslar Takımındaki maksimum oyuncu sayısı. @editable MaximumInfiltrators:int = 2 # Saldırganlar Takımındaki maksimum oyuncu sayısı. @editable MaximumAttackers:int = 4 # Savunmacılar Takımındaki maksimum oyuncu sayısı. @editable MaximumDefenders:int = 4 # Oyun başladıktan sonra oyuncuları takımlarının doğma karesine ışınlayan Işınlayıcıların dizisi. @editable Teleporters:[]teleporter_device = array{} # Her takım için silah vericilerin dizisi. @editable var WeaponGranters:[]item_granter_device = array{} # Her takım için oyuncu doğma karelerinin dizisi. @editable PlayersSpawners:[]player_spawner_device = array{} # Casuslar takımına referans. var MaybeInfiltrators:?team = false # Saldırganlar takımına referans. var MaybeAttackers:?team = false # Savunmacılar takımına referans. var MaybeDefenders:?team = false # Oyundaki tüm takımların dizisi. var Teams:[]team = array{} # Takımların maksimum oyuncu sayılarıyla eşleştirilmesi. var TeamsAndTotals:[team]int = map{} OnBegin<override>()<suspends>:void = # Bütün Takımları al set Teams = GetPlayspace().GetTeamCollection().GetTeams() # Takımları daha sonra başvurmak üzere kaydet set MaybeInfiltrators = option{Teams[0]} set MaybeAttackers = option{Teams[1]} set MaybeDefenders = option{Teams[2]} if: Infiltrators := MaybeInfiltrators? Attackers := MaybeAttackers? Defenders := MaybeDefenders? Logger.Print("Üç takımın hepsi bulundu") set TeamsAndTotals[Infiltrators] = MaximumInfiltrators set TeamsAndTotals[Attackers] = MaximumAttackers set TeamsAndTotals[Defenders] = MaximumDefenders Logger.Print("TeamsAndTotals içinde üç takımın hepsi ayarlandı") else: Logger.Print("Bütün takımlar bulunamadı, ada ayarlarında doğru takımları atadığından emin ol.") -
Kodu Visual Studio Code’a kaydet ve ana menüdeki Verse bölümünün altında Verse kodları oluştur kısmına tıklayarak bölümdeki Verse tarafından yazılan cihazını güncelle.
-
Bölümün oynanış testini yapmak için UEFN araç çubuğunda Oturumu Başlata tıkla. Bölümüne oynanış testi yaptığında
TeamsAndTotalsiçinde üç takım da ayarlanmış olmalıdır. Günlüğe bakıp bu davranışı doğrula.
Sonraki Adım
Bu eğitimin sonraki adımında, bir oyunun başlangıcında oyuncu takımlarını nasıl asimetrik bir şekilde dengeleyeceğini öğreneceksin.