Metin2'de "Beceri Hasarı" ve "Ortalama Zarar" efsunlarının nasıl çalıştığını hiç merak ettiniz mi?
Aslında bu iki efsunun birbiriyle bağlantılı şekilde hesaplandığını söylemek mümkün. game source/game/item_addon.cpp dosyasının içinde yer alan aşağıdaki formül, bu işleyişin temelini oluşturuyor:
Bu kod bloğunda:
Formülün işleyişi şu şekilde özetlenebilir:Öncelikle rastgele bir iSkillBonus değeri üretilir, ardından bu değere bağlı olarak iNormalHitBonus değeri hesaplanır.
Şimdi bu üretim sürecine biraz daha yakından bakalım:
Burada kullanılan MINMAX(-30, x, 30) fonksiyonu, değerin -30 ile +30 arasında kalmasını sağlar.
Asıl dikkat çeken ise gauss_random(0, 5) ifadesidir.
Bu fonksiyon, 0 ortalamalı ve 5 standart sapmalı Gauss dağılımına sahip rastgele bir değer üretir.
Ne anlama geliyor?
Aşağıdaki görseller, bu dağılımı daha net görmenizi sağlar:
İlk örnekte (0,5):
İkinci örnekte (0,10):
Sonuç?
Standart sapma arttıkça, yüksek beceri bonusu (iSkillBonus) gelme ihtimali de yükselir.
Yani daha yüksek "becerili vuruş" değerleri görmek isterseniz, gauss_random(0, 5) fonksiyonundaki 5 değerini arttırmanız yeterli olacaktır.
Kendi testinizi yapmak ister misiniz?
Aşağıdaki küçük C++ programı ile bunu kolayca gözlemleyebilirsiniz:
Aslında bu iki efsunun birbiriyle bağlantılı şekilde hesaplandığını söylemek mümkün. game source/game/item_addon.cpp dosyasının içinde yer alan aşağıdaki formül, bu işleyişin temelini oluşturuyor:
Bu kod bloğunda:
- iSkillBonus → "Becerili Vuruş" değerini,
- iNormalHitBonus → "Ortalama Zarar" değerini temsil ediyor.
Formülün işleyişi şu şekilde özetlenebilir:Öncelikle rastgele bir iSkillBonus değeri üretilir, ardından bu değere bağlı olarak iNormalHitBonus değeri hesaplanır.
Şimdi bu üretim sürecine biraz daha yakından bakalım:
Burada kullanılan MINMAX(-30, x, 30) fonksiyonu, değerin -30 ile +30 arasında kalmasını sağlar.
Asıl dikkat çeken ise gauss_random(0, 5) ifadesidir.
Bu fonksiyon, 0 ortalamalı ve 5 standart sapmalı Gauss dağılımına sahip rastgele bir değer üretir.
Ne anlama geliyor?
- Ortalamanın 0 olması, üretilen değerlerin ağırlıklı olarak 0 civarında olduğunu gösterir.
- Standart sapma arttıkça, yüksek mutlak değerli sonuçların gelme ihtimali de artar.
Aşağıdaki görseller, bu dağılımı daha net görmenizi sağlar:
ortalama 0, standart sapma 5 | ortalama 0, standart sapma 10 |
---|---|
|
İlk örnekte (0,5):
- iSkillBonus'un 0-5 arasında gelme ihtimali %34,13
- 5-10 arası gelme ihtimali ise %13,59
İkinci örnekte (0,10):
- 0-10 arası %34,13
- 10-20 arası %13,59
Sonuç?
Standart sapma arttıkça, yüksek beceri bonusu (iSkillBonus) gelme ihtimali de yükselir.
Yani daha yüksek "becerili vuruş" değerleri görmek isterseniz, gauss_random(0, 5) fonksiyonundaki 5 değerini arttırmanız yeterli olacaktır.
Kendi testinizi yapmak ister misiniz?
Aşağıdaki küçük C++ programı ile bunu kolayca gözlemleyebilirsiniz: