"Overwatch" sıfırdan öğrenmeye başlayın: Harita Atölyesine Giriş

Yazar: NGA- Taki kariyeri

Bu makalenin amacı başlamak için sıfırdan başlamaktır. Harita atölyesinin ne olduğunu zaten anladıysanız, bu makale size pek yardımcı olmayabilir.

Harita atölyesinin gizemli "perdesini" "ortaya çıkarmak" için önce birkaç soruyu kullanıyoruz:

  • Harita Atölyesi nedir? Daha fazla işlevi olan özel bir moddur.
  • Harita Atölyesi ne yapabilir? Bu aşamada, ilginç bir oyun oynayabilir, Harita Atölyesi çalışmalarını zaten deneyimlediğinize inanıyorum.
  • Harita Atölyesi ne yapamaz? Oyunun temel çerçevesinden ayrılamaz.Örneğin, OW sadece 12 oyuncuyla sınırlıdır ve harita atölyesi odanızın daha fazla kişiyi içermesine izin vermez. Bu aşamada modeli değiştiremez veya araziyi değiştiremez.
  • Harita atölyesi nerede? Bulması zor değil.Özel bir oda oluşturun, ayarları açın ve büyük bir "Harita Atölyesi" düğmesi bulacaksınız. Map Workshop'un tüm ayarları burada.

Kural nedir

Harita atölyesi birçok "kural" dan oluşur. Kurallar neler? Bunu birer birer "yönetmelikler" olarak düşünebilirsiniz. "Kural" yürütüldüğünde, yürütülür.

Örneğin: hayatta işe geç kalırsanız, patronunuz maaşınızı kesecektir. Sabah alarm çaldığında kalkmalısın. Bunlar hayattaki "kurallar" dır.

Kurallar üç bölümden oluşur: olaylar, koşullar ve eylemler. Yine de yukarıdaki örnek, işe geç kaldığınızda ve bugün izinli olmadığınızda, patron maaşınızı kesecektir. Bu kural da işe geç kalma bir olay, bugün izin günü değildir bir koşul ve ücret kesintisi bir eylemdir.

Bu oyuna nasıl yansıyor? Örneğin, DVA'nın nükleer patlamasının belirli bir menzil içindeki düşmanlara zarar verebileceğini biliyoruz. O halde, "Mecha patlaması" bir olaydır, "Oyuncu patlama menzilinde ve oyuncu ile DVA düşmanca bir ilişki içindedir", "Hasara neden olmak "Eylemdir. (Not: Olaylar, koşullar ve eylemler arasındaki ilişkiyi anlamanıza izin verecek "Mecha Patlaması" örneğini burada bulabilirsiniz)

Sonuç olarak, kural şudur: Bir şey (olay) meydana geldiğinde ve koşullar karşılandığında, bazı eylemler yapın.

Kuralları yaz

"Kuralların" ne olduğunu zaten bildiğinize inanın, sonra, "kurallar" aracılığıyla basit bir şey yapacağız: oyuncunun her sakatlandığında 10 sağlık puanı kurtarmasına izin verin.

Süreç aslında çok basit: oyuncu sakatlandı iyileşiyor. Öyleyse ilgili kurallar ne olmalıdır?

Olaylar listesine baktığımızda, bir olayın tam olarak doğru olduğunu gördük: oyuncu yaralandı. Sonra bunu bir etkinlik olarak kullanacağız.

Herhangi bir özel gereksinimimiz olmadığından "koşullara" gerek yoktur.

Eylem, oyuncuya kanı geri vermektir. Hangi eylemi kullanmalıyız? Belgeye baktığımızda, bir "tedavi" eylemi bulduk. Birkaç şey seçmesi gerekiyor:

  • oyuncu
  • Hasta
  • Tedavi miktarı

"Oyuncu", kime tedavi edilecek olan bu eylemin hedefidir. Oyuna, tedavinin hedefinin sakatlanan oyuncu olduğunu nasıl bildiririz? "Event player" kullanabiliriz. Adından da anlaşılacağı gibi "etkinlik oyuncusu", etkinliği tetikleyen oyuncuyu ifade eder. Yukarıdaki "sakatlanan oyuncu" olayını kullandık, bu nedenle buradaki "olay oyuncusu" sakatlanan oyuncuya atıfta bulunuyor. Benzer şekilde, "oyuncu öldürüldü" ifadesini etkinlik olarak kullanırsak, ölen oyuncuya atıfta bulunmak için "olay oynatıcı" yı kullanabiliriz.

Bu durumda şifacının kim olduğu önemli değildir, bu yüzden biz sadece "yok" u seçeriz.

Son olarak tedavi miktarını 10 puan olarak belirledik, bu yüzden "sayı" seçip 10 giriyoruz.

değişken

Programlamaya hiç katılmamış arkadaşlar bu şeyi anlamakta biraz zorlanabilir. Ancak hayal edildiği kadar zor değil. Matematiği anlamak için kullanabiliriz.

Örneğin, bir denklemimiz var: y = x + 1. Matematiksel olarak, x'e bağımsız değişken deriz: Farklı x koyduğumuzda, y farklıdır. "Denklemimiz" sadece x'ten y'ye bir süreci tanımlar.

Yukarıdaki örneğimizde bir eylemimiz var: etkinlik oyuncusunu 10 sağlık puanı iyileştirmek. Burada, "etkinlik oynatıcı" bir değişkendir çünkü bir etkinliği tetikleyen birçok oyuncu olabilir. Süreç, oyuncuyu iyileştirmektir. Ve biz buna genellikle "sabit" diyoruz - çünkü değişmez, hangi oyuncu sakatlanırsa sakatlanırsa iyileşme miktarı 10'dur.

Tabii ki, bu sadece en temel değişken kavramı. Aslında değişken bir "kutu" gibidir, bir şeyler koyabilir veya içindekileri çıkarabiliriz.

OW'de değişkenler ve sabitler topluca "değerler" olarak adlandırılır.

"Donmuş Bomba" yı elde edin

Şimdi biraz daha karmaşık kurallar yazalım. McCree'nin mermilerinin "donmuş mermiler" haline gelmesini umuyoruz - McCree'nin vurduğu oyuncular 1 saniye boyunca dondurulacak.

Benzer şekilde, önce süreci düşünelim: oyuncuya McCree vurur oyuncuyu dondur.

"Olay" ın "McCray tarafından vurulmadığını" gördük. Nasıl yapılır? "Koşulların" gitmesine izin verme zamanı. McCree tarafından dövülmek bir tür sakatlıktır, bu nedenle "yaralı oyuncu" yu "olay" için kullanmaya devam edebiliriz. Ancak ek bir koşulumuz var: hasarın kaynağı bir McRae oyuncusu olmalıdır.

Belgeyi gözden geçirdik ve "saldırı tarafının" hasarın kaynağına başvurabileceğini gördük. Ama doğrudan karşılaştırmalı mıyız? Bunu dikkatlice düşünün, "Oyuncu McCree'yi kullanıyor", onu oyuncuyla değil, kahramanla karşılaştırmak için. Bu nedenle, oyuncunun hangi kahramanı kullandığını nasıl bileceğimizi aramaya devam ediyoruz. Sonunda "kahraman" seçeneğini bulduk. Koşul: hero (saldırı tarafı) == hero (McRae)

Not: Eşittir işaretinin sol ve sağ tarafları aynı türden olmalıdır, yani benzer etkinlik oyuncusu == kahraman (McRae) yanlıştır, çünkü sol oyuncu, sağ ise kahramandır. Yazmanın doğru yolu kahraman (etkinlik oyuncusu) == kahraman (McRae)

Eylem ne olmalı? "Karlar Ülkesi" resmi devletlerden biridir, doğrudan "set durumu" kullanabiliriz.

  • oyuncu
  • Asist
  • statü
  • süresi

"Oyuncu" yukarıdaki ile aynıdır, sadece "etkinlik oynatıcı" yı kullanın. Asist, "saldırgan" dır. Durum "dondu". "Süre" için "1" girin.

İki "özel" etkinlik

Yukarıdaki içerik sayesinde, kuralların ne olduğunu zaten biliyoruz ve temel kurallar yazılıyor. Ancak çok az "olay" olduğunu görüyorsunuz. Örneğin, başka bazı işlevleri yapmak istiyorsak, oyuncunun yeniden doğduktan hemen sonra onu belirli bir pozisyona getirmesini isteriz, bu bir alma, hasara neden olma veya bir ölüm olayı olsun, gereksinimleri karşılamayacaktır. Şu anda, sürekli olayları + koşulları kullanmanız gerekir.

Sürekli olaylar diğer olaylarla aynı değildir. Diğer olaylar "bu olduğunda" ve sürekli olay "Koşullar karşılanana kadar bekleyeceğim" dir.

Örneğin, oyuncunun öldürülüp öldürülmediğine karar vermek için "hayatta kalma" yı kullanabiliriz. Yukarıda bahsettiğimiz sürekli olaylarla birlikte şu kuralı yazabiliriz:

  • Etkinlik: Oyuncu başına devam eden
  • Durum: Hayatta Kalma (etkinlik oyuncusu) == true

Bunun anlamı ne? Yukarıdaki girişe göre, onu "tercüme ediyoruz", yani: oyuncu hayatta olana kadar bekleyin, ardından aşağıdaki işlemleri yapın.

Resmi belgede bir açıklama var: "İlk kontrol için şart sağlandığında, eylem yürütülecektir. Koşul listesi karşılanmadığında, ancak koşul daha sonra yerine getirildiğinde, eylem tekrar denenecektir."

Bu nedenle, yukarıdaki kuralımız aslında şudur: Oyuncu öldürüldüğünde, oyun, oyuncu dirilinceye kadar bekleyecek ve ardından ilgili eylemi gerçekleştirecektir. Oyuncu tekrar öldürüldükten sonra oyun beklemeye devam edecektir. Yukarıdaki işlemi sürekli tekrarlayın.

Benzer şekilde, yerde olmayan oyunculara interaktif tuşa (F) basarak cevap verebilecek bir kural yazacağız, o zaman böyle yazabiliriz

Etkinlik:

* Oyuncu başına sürekli

durum:

* Yerde (etkinlik oyuncusu) == yanlış

* Düğmeye basıldığında (etkinlik oynatıcı, etkileşim) == true

Bir model yapmak

Yukarıdaki makale sayesinde kuralları nasıl yazacağımızı zaten biliyoruz. Ama hala basit bir oyun yazmayı bilmediğine inanıyorum. "Ateşi İzlemek" olarak bilinen "sıcak patates" modunu oynadınız mı bilmiyorum? Burada bu modeli örnek alıyoruz. (Daha önce oynamadıysanız, deneyimleyebilirsiniz)

Not: Bu makale öğretici bir makale olduğu için oyun modunun tamamını kapsamayacaktır.

Ateş yaymak

Bu modun nasıl oynandığını düşünelim mi? "Ateş" e sahip oyuncular, diğer oyunculara saldırarak (yöntem ne olursa olsun) diğerlerine "ateş" verebilirler.

Peki, bu süreç kurallarla nasıl tanımlanıyor? Şunu söyleyebiliriz: Bir oyuncu sakatlandığında ve ateşi olmadığında, ancak ona saldıran oyuncunun ateşi olduğunda, ateşi oyuncuya verin.

Yukarıdaki açıklamadan, "sakatlanan oyuncu" olayını seçmemiz gerektiğini görmek zor değil. Ama oyuncunun "ateşi" olup olmadığını nasıl anlarız? Ashin "Geciktirici Patlatıcı" yı hatırlıyor musunuz bilmiyorum - ateşleme durumunu ateşi temsil etmek için kullanabiliriz. Kılavuzu okuyarak birkaç şey bulabiliriz: "durumu var", "durumu ayarla" ve "durumu temizle". Bu şekilde koşulları birleştirebiliriz.

Koşul, sakatlanan oyuncunun ateşi olmaması ve saldırganın ateş olmasıdır. "Oyuncu yaralanan" olayını kullandığımız için, birincisine atıfta bulunmak için "olay oyuncusunu", ikincisine atıfta bulunmak için "saldırı tarafını" kullanıyoruz. Koşullar şunlardır:

  • Durum var (olay oynatıcı, ateşleme) == yanlış
  • Durumu var (saldıran taraf, tutuştur) == true

Eylem, yangını başka bir oyuncuya "geçirmektir". "Geçme" süreci yangını "kaybeden" bir oyuncu ve ateşi "alan" bir oyuncuya bölünmüştür. Bu nedenle iki kural vardır:

* Durumu ayarla (etkinlik oynatıcı, yok, ateşleme, 9999)

* Durumu temizle (saldırı tarafı, tutuştur)

Ek olarak, "ateşleme" yalnızca bir etkidir - görülebilir veya görülmez, bu nedenle başka bir "hasar" eylemi eklememiz gerekir:

* Sürekli hasarı başlat (etkinlik oyuncusu, yok, 9999, 50)

* Oyuncu değişkenlerini ayarlayın (etkinlik oyuncusu, A, son sürekli hasar etkisi kimliği)

* Sürekli hasarı durdur (oyuncu değişkeni (saldırı grubu, A))

Burada değişkenleri kullanıyoruz. Yukarıdaki değişkenler bölümünü birleştirebilir ve bunu neden yapmak istediğinizi düşünebilirsiniz. (Not: Değişkenleri bir "kutu" olarak düşünebilirsiniz, ayar bir şeyleri "kutuya" koymaktır)

Son kural şekilde gösterilmiştir:

Puan ekleyin

Diyor ki, "Başlangıçta her şey zor." Artık en temel şeyleri yaptığımıza göre, bir sonraki şeyi yapabiliriz: zafer yargısı. Mantığımız şudur: Bir oyuncu kaldığında, o oyuncuya bir puan ekleyeceğiz.

Bir oyuncunun ne zaman kalacağını bilmiyoruz - belki bir oyuncu öldükten sonra, ama bir oyuncunun oyunu bırakmasından sonra da olabilir. Tam olarak ne zaman olduğunu bilmemizin bir yolu yok, ancak durumumuz çok açık: hayatta sadece bir oyuncu var. Bu nedenle, bunu yapmak için sürekli olayları + koşulları kullanırız. Kılavuza baktık ve "Hayatta Kalan Oyuncu Sayısı" adlı bir değer bulabiliriz. Doğrudan kullanıyoruz:

  • Etkinlik: Devam Eden-Küresel
  • Durum: Hayatta kalan oyuncu sayısı (tüm takımlar) == 1

Ve tek yapmamız gereken ona bir puan vermek. Kılavuzda "hayatta kalan tüm oyuncular" adlı bir içerik bulduk, ancak şunu unutmayın: bu bir dizi. Çünkü oyunda birçok oyuncu hayatta olabilir veya hiç olmayabilir. Oyun o kadar akıllı değil, kurallarımızın sadece bir oyuncuya sahip olması gerektiğini bilmiyor. Bu nedenle, "dizideki değerler" kullanmamız gerekir:

  • Oyuncu skorunu değiştirin (dizideki değer (hayatta kalan tüm oyuncular (tüm takımlar), 0), 1)

Sonra, tüm oyuncuları diriltmeli ve yeni bir oyuna başlamalıyız:

  • Yeniden doğuş (tüm oyuncular (tüm takımlar))

Son kural şekilde gösterilmiştir:

Rastgele ateş

Şimdi genel çerçeve var, ancak bazı özel durumlarla ilgilenmedik: örneğin, oyuncu öldüğünde veya oyuncu oyunu bırakıp "yangının" kaybolmasına neden olduğunda, oyuncuya rastgele "ateş" vermemiz gerekiyor. . Yukarıdaki gibi, sürekli olayları + koşulları kullanıyoruz.

Durumumuz, tüm oyuncular ateşten çıktığında olmalı. Başka bir deyişle, kovulan oyuncuların sayısı = 0 olduğunda. Oyun, yanmakta olan oyuncuları doğrudan elde edemez, ancak bunu yapmak için "filtrelenmiş diziyi" kullanabiliriz: hayatta kalan tüm oyunculardan ateşte olan oyuncuları filtreleyebiliriz.

Koşul için şu şekilde yazılmalıdır: Miktar (filtrelenmiş dizi (tüm canlı oyuncular, durum (geçerli dizi öğesi, yanan))) == 0. (Bu kuralı iyi anlamadıysanız lütfen köşeli parantezleri içeriden dışarıya doğru çözmeyi deneyin, kılavuzu birleştirin, yavaş yavaş okuyun)

Eylem, hayatta kalan oyunculardan rastgele bir oyuncu seçmek ve "ateş" etmesine izin vermektir. Benzer şekilde, "dizileri" tekrar kullanmalıyız:

  • Global değişkenleri ayarlayın (A, dizinin rastgele değeri (hayatta kalan tüm oyuncular (tüm takımlar)))
  • Durumu ayarla (global değişkenler (A), ışık)
  • Sürekli hasarı başlat (küresel değişken (A), yok, 9999, 50)
  • Oyuncu değişkenlerini ayarlayın (genel değişkenler (A), A, son sürekli hasar etkisi kimliği)

Nihai kurallar aşağıdaki gibidir:

Sorunu çöz: ölüm ve ateş

Şimdi birkaç arkadaşınızı davet edin veya oyuna girmek için daha fazla hesap açın. Bir oyun başlatın. Ateşi mutlu bir şekilde geçerken bir oyuncu öldü. Ancak, "yangının" bir sonraki kişiye geçmediğini gördünüz. Ev sahibi "Map Workshop Viewer" ı açtı ve bir göz attı, ha? Rastgele yangın yayma kuralları neden işe yaramadı?

Ölümün otomatik olarak alev almayacağı ortaya çıktı, bununla manuel olarak da ilgilenmemiz gerekiyor:

* Etkinlik: Oyuncu öldü

* Durumu vardır (etkinlik oynatıcı, ateşleme) == doğru

"Ateşleme" aslında durumu kaldırıyor, bu nedenle işlem de çok basit, temelde yukarıdaki kuralları kopyalayıp yapıştırın:

* Durumu temizle (olay oynatıcı, tutuştur)

* Sürekli hasarı durdur (oyuncu değişkeni (etkinlik oyuncusu, A))

Nihai kurallar aşağıdaki gibidir:

sonuç olarak

Birkaç kurala göre basit bir "sıcak patates" kalıbı yazdık. Bulduğuna inanıyorum, bu zor değil. İhtiyacınız olan tek şey, bir şeyi küçük bir şeye dönüştürmek ve sonra onu tamamlamak için kuralları kullanmak.

Bugünün Atlası: Horford'un göz alıcı eşi Emily Vega
önceki
Zhu Yilong ve Hu Ge samimi bir şekilde bir araya geldi ve iki erkek tanrı aynı çerçevede, uzun bir yaşamın ardından her şeyi görebileceklerini gösteriyor!
Sonraki
NBA'deki ortak tek elle yakalama neden şimdi gitti? Nedenine inanmayabilirsin
Vlog, Pengpeng'in Zhu Yilong için makyaj yapmasını ve dudaklarının hafifçe açılmasını izledi. Düşüncelerinizi çarpıtmaya nasıl cüret edersiniz?
35 yaşındaki James kası neden bu kadar güçlü? Diyetini ve eğitimini okuduktan sonra anlayabilirsiniz
Zhu Yilong'un kızlar için kolye takması çok zor, baş parmağı yerinden çıkmış, yakın çekim neşe dolu
"Hadi, beni neredeyse durduruyordun" Bu cümle Ürdün dışında, bu 4 kişi de söylemeye cesaret ediyor
Zhu Yilong yeni onayın kilidini açtığında, bu sadece bir anketti ve fanlar başka bir sunucuya çarptı!
Şiddetli savunmanın kirli olduğunu kim söylüyor? Bu 5 NBA oyuncusu istisnadır. Rakipleri yenmek için savunma kullanırlar
Zhu Yilong, listedeki en genç olan Magnolia Ödülünde En İyi Erkek Çöpçatan seçildi ve Qi Heng'in öne çıkan anı burada.
"Şeytanı Yakalayalım" Kumdan Heykel Koleksiyonu: Hile Topu Oyuncak Çeşitli Renkli Topları Profesyonelce Geri Dönüştürüyor
NBA'in en başarısız beş dev kombinasyonu, listedeki Nets'in beş devi, lig gülüşü olarak ilk sırada
Zhu Yilong, gerçek arkadaşım: Yüksek bir IQ ile gerçeği bir bakışta görebiliyorum Fan kızın yeleği düşecek mi?
"DOTA2" Dragon Knight'ın A Personel Çıktısı Araştırması
To Top