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_game
sınıf tanımına aşağıdaki alanları ekle:MaximumInfiltrators
,MaximumAttackers
veMaximumDefenders
adlı üç düzenlenebilir tamsayı.MaximumInfiltrators
değerini 2,MaximumAttackers
veMaximumDefenders
değ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 = 4
TeamsAndTotals
adlı birmap
değ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{}
Teleporters
adlı 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{}
WeaponGranters
adlı düzenlenebilir biritem_granter_device
dizisi. 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
,MaybeAttackers
veMaybeDefenders
adlı üç isteğe bağlıteam
değ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
Teams
adlı 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çindeTeams
dizisini 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_collection
API’ındanGetTeams()
fonksiyonunu kullanabilirsin.OnBegin<override>()<suspends>:void = # Bütün takımları al. set Teams = GetPlayspace().GetTeamCollection().GetTeams()
Teams
dizisinde karşılık gelen takımlaraMaybeInfiltrators
,MaybeAttackers
veMaybeDefenders
değ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
,MaybeAttackers
veMaybeDefenders
bireroption
olduğ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çeriyorlarsaTeamsAndTotals
iç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_game
kodun ş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
TeamsAndTotals
iç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.