Kodlarla Ortalama Zarar ve Beceri Hasarı Hesaplamaları (C++)

Exatluen

Level 1
Katılım
29 Eyl 2024
Konular
78
Mesajlar
232
Beğeniler
255
GG Coin
6,000
Ticaret Değeri - 0%
0   0   0
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:


C++:
Kodları görüntüleyebilmek için Giriş Yap ya da Kayıt Ol
Bu işlem, 15 saniyeden az sürer.


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:


C++:
Kodları görüntüleyebilmek için Giriş Yap ya da Kayıt Ol
Bu işlem, 15 saniyeden az sürer.


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 5ortalama 0, standart sapma 10
1744645519566.png
1744645534478.png


İ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:

C++:
Kodları görüntüleyebilmek için Giriş Yap ya da Kayıt Ol
Bu işlem, 15 saniyeden az sürer.
 
Geri
Üst Alt