BrawlVision

Metodoloji

Her istatistiği nasıl inşa ediyoruz

BrawlVision, Supercell'in resmi API'sini, kendi PRO oyuncu örnekleme katmanımızı ve birkaç istatistiksel yumuşatma adımını birleştirerek sana kararlı, karşılaştırılabilir ve kendi belirsizliği konusunda dürüst sayılar sunuyor. Bu sayfa her bir adımı tam formülleri ve güncelleme sıklıklarıyla belgeler.

Son güncelleme: 2026-04-30

Veri kaynakları

Gösterdiğimiz her şey, denetlenebilir tuttuğumuz üç kaynaktan gelir: Supercell'in genel API'si (developer.brawlstars.com), Brawlify CDN'i (cdn.brawlify.com) ve resmi API'nin oyuncu başına son 25 maçın ötesinde sunmadığı savaşları ve toplamları kalıcılaştıran kendi Supabase veritabanımız.

Supercell API'si yapısal veriler için kanonik kaynaktır — brawlerlar, aksesuarlar, yıldız güçleri, hiperşarjlar, eşyalar ve etkinlik rotasyonu — ancak brawler görselleri, nadirlik ve uzun açıklamalar gibi kritik alanları dışarıda bırakır. Bu alanları, bağımsız çalışan ve bazen Supercell'den bir-üç gün geriden gelen Brawlify CDN'i ile çapraz kontrol ederiz. Resmi API'de Brawlify'da henüz var olmayan yeni bir brawler tespit ettiğimizde, brawler sayfasının lansman gününde doğru render edilmesi için yerel bir nadirlik haritası (BRAWLER_RARITY_MAP) tutarız.

Veritabanımız meta_stats tablosunda iki sınıf satır saklar: source=user (senkronizasyonu açan premium kullanıcıların gerçek savaşları) ve source=global (en iyi PRO sıralamalarından otomatik örnekleme). Sitede gösterilen her kamuya açık istatistik source=global filtresiyle hesaplanır, böylece tek bir kullanıcının kişisel verisi kamuya açık sayfalara sızmaz.

PRO verilerini nasıl inşa ederiz

BrawlVision'ın "PRO" katmanı, dünyanın en iyi oyuncularının son savaşları üzerinden hesaplanan toplamlardır. Her altı saatte bir cron işi (meta-poll), rekabetçi aktivitenin yoğunlaştığı on bir ülkenin Supercell resmi sıralamalarını sorgular ve her ülkenin top 200'ünden yaklaşık 2.100 benzersiz oyunculuk dedupe edilmiş bir havuz oluşturur.

Bu havuza, popüler (harita, mod) kombinasyonlarının veri kümesine hâkim olup nadir olanları maskelemesini engellemek için olasılıklı bir örnekleyici uygularız. Bireysel bir savaşı kabul olasılığı p = min(1, (minLive + 1) / (current + 1)) olup minLive en az temsil edilen kombinasyonun sayısı, current ise aday savaşın kombinasyonunun sayısıdır. Yetersiz örneklenen kombinasyonlar daha fazla ağırlık alır; doymuş olanlar büyümeyi bırakır.

Cron, serverless fonksiyonun 300 sn maxDuration'ı içinde kalmak için yumuşak 270 saniyelik bir bütçeyle çalıştırma başına META_POLL_MAX_DEPTH = 1.000 oyuncuya kadar yineler. Her yanıt; iterasyon sayıları, sorgulanan oyuncular ve mod başına sayımları içeren "adaptive" tanılama bloğu içerir, böylece anormal örnekleyici davranışı üretimde gözlemlenebilir kalır.

Bayesian Win Rate

Naif Win Rate (galibiyetlerin maçlara bölümü) maç sayısı azken yanıltır. Yeni bir haritada 3 galibiyet ve 0 mağlubiyeti olan bir brawler, hiçbir şey ifade etmeyen bir %100 gösterir. BrawlVision bu çarpıklığı düzeltmek ve çok farklı örneklemlere sahip brawler’lar arasında karşılaştırılabilir bir sayı döndürmek için Bayesçi düzleştirme uygular.

Formül, WR_bayesian = (galibiyet + α·μ) / (maç + α) şeklindedir. α parametresi kaç hayali maç eklediğimizi tartar, μ ise onlara atadığımız sonuçtur. α = 30 kullanıyoruz, bu da gerçek verilere bakmadan önce 30 önceki maç eklemeye denk gelir.

Eylül 2026’ya kadar bu hayali maçlar %50 değerindeydi ve bu yanlış bir değerdi. Tablomuz maç başına tek bir satır tutar, sorgulanan oyuncunun satırını; bu oyuncu kendi ülkesinin ilk 200’ünde yer alır ve maçlarının %71,4’ünü kazanır (14 günlük pencerede 85.970 maçta 61.400 galibiyet, 7 Eylül 2026’da ölçüldü). %71,4 çevresinde toplanmış veriyi %50’ye doğru büzmek, az maçlı her hücreyi aşağı çekiyordu ve örneklem küçüldükçe daha çok çekiyordu. Bugün μ 0,714 değerinde, yani ölçtüğümüz taban.

Önselin ağırlığı örneklem büyüdükçe azalır. 1.000 maç ve 530 galibiyette sonuç (530 + 21,42) / 1.030 = %53,5 olur, ham %53,0’a çok yakın. 3 maç ve 3 galibiyette naif %100 yerine %74,0 olur. Düzleştirme yalnızca örneklem gerçekten küçükken ağırlık taşır.

Düzeltilmiş güç

Yayımladığımız Win Rate iki şeyi karıştırıyor. Biri bir brawler’ın ne kadar iyi olduğu, öbürü karşısına kimin çıktığı. Çoğunlukla avantajlı eşleşmelerde görünen bir brawler yukarılarda çıkıyor ve bu, kiti hakkında pek bir şey söylemiyor. Düzeltilmiş güç ikisini ayırıyor ve o brawler’ın orta seviyedeki bir rakibe karşı ne sıklıkla kazanacağını tahmin ediyor.

Hesaplama, son 14 günün eşleşme tablosu üzerinde MM ile uyarlanan bir Bradley-Terry modelidir. Her brawler çifti uyarlamaya girmeden önce simetrikleştirilir, çünkü satırlarımız her zaman sorgulanan oyuncunun tarafından kaydedilir ve o taraf avantajlıdır. Her iki yönde de en az 30 düellosu olan çiftler üzerinden ölçüldüğünde, A’nın B’ye karşı Win Rate değeri ile B’nin A’ya karşı Win Rate değeri medyanda %138 ediyor, simetrik bir veri ise %100 ederdi. Her düello iki taraftan birer kez sayıldığında bu avantaj ikisinin de lehine giriyor ve birbirini götürüyor. Sonuç, uyarlamanın medyan brawler’ına karşı beklenen Win Rate olarak yayımlanır, dolayısıyla bu ölçekte %50 beraberliktir.

Sayı, rakip bileşimini ve örneklemenin ortalama avantajını hesaptan düşer. Brawler’ı kimin oynadığını hesaptan düşmez. Ne meta_stats ne de meta_matchups oyuncu kimliği tutar, dolayısıyla elimizdeki veriyle oynayanın seviyesini çıkarmak mümkün değildir; bunun için sorgulanan oyuncunun sıralamasının veri alımı sırasında kaydedilmesi gerekirdi. Bu nedenle sitedeki listeler hâlâ gözlemlenen Win Rate değerine göre sıralanır ve güç yanında durur. Gözlemlenen Win Rate değerinin %50 değil de %72 civarında olmasının nedeni de budur. Örneklem, on bir ülkenin ilk 200 oyuncusunun maçlarından oluşur ve bu oyuncular oynadıklarının %72’ye yakınını kazanır, yani o ölçekte %72 sıradan bir brawler’ı tanımlar. Gücü yalnızca 20 farklı rakibe karşı en az 400 kayıtlı düellosu olan brawler’lar için yayımlarız; bunun altında, ayakta durmayan bir sayı göstermek yerine değeri atlarız.

Comfort Score

Comfort Score, "ortalamadan gerçekten hangi brawlerla daha iyi oynuyorsun?" sorusunu yanıtlayan BrawlVision'a özgü bir metriktir. Saf Win Rate değildir: kişisel performansın farklı boyutlarını kapsamak için 60/30/10 ağırlıklarıyla üç bileşeni birleştirir.

Ana bileşen (% 60), oyuncunun o brawlerla WR'ı; küresel meta gibi Bayesian yumuşatılmıştır, böylece nadir oynanan brawler sıralamayı bozmaz. Orta bileşen (% 30), kişisel WR ile brawlerın genel meta WR'ı arasındaki farktır: küresel meta %48'deyken SHELLY üzerinde %55 olan oyuncu, metası %53 olan bir brawlerda %55 olan oyuncudan daha fazla comfort kazanır çünkü göreceli artış daha büyüktür.

Son bileşen (% 10), normalize edilmiş kullanım sıklığıdır: diğer her şey eşit olduğunda bir brawleri 100 kez oynamak 10 kez oynamaktan daha çok sayar çünkü tutarlılık ödüllendirilir. Tam formüller ve ağırlıklar src/lib/analytics/compute.ts içinde yaşar ve her endpoint çağrısında aynı şekilde uygulanır, böylece sıralama tekrarlanabilir.

Güncelleme sıklığı

Bir verinin ne sıklıkta yenilendiği nasıl yorumlanması gerektiğini etkiler, bu yüzden açıkça belgeleriz. Statik sayfalar (bu dahil) 24 saatlik revalidasyonla ISR (Incremental Static Regeneration) kullanır. Dinamik veriye sahip sayfalar, ilgili iş geçersiz kılana kadar API yanıtını önbelleğe alır.

Brawlerlar, aksesuarlar ve yıldız güçleri Supercell API'sinden 24 saatlik sunucu önbelleğiyle senkronize olur. Meta-poll (PRO verisi) her 6 saatte bir çalışır ve taze meta_stats satırları üretir. 7 günlük trend ön hesaplaması meta-poll ile çakışmamak için pg_cron'da "17 */6 * * *" üzerinde (her altıncı saatin 17. dakikasında) çalışır. Oyun içi etkinlik rotasyonu her 30 dakikada bir yenilenir.

Senkronizasyonu açan premium kullanıcıların bireysel savaşları, sync cron'u ile her maçtan hemen sonra kayan bir pencerede indirilir. Veritabanına girdikten sonra source=user ile meta_stats'i besler ve profil bölümündeki özel analizlerin temelidir; kamuya açık toplamlarda asla görünmez ve source=global ile asla karışmaz.

Sık sorulan sorular

Az örneklemli bir brawlerin WR'ı neden %0 veya %100 değil?+

Çünkü %50 merkezli önselle Bayesian yumuşatma uyguluyoruz. Çok az maçta gösterilen sayı %50'ye yakın; örneklem büyüdükçe gerçek WR'a yakınsar. Bu kasıtlı: 3 maçta %100 bilgi değil, gürültüdür.

Kamuya açık sayfalar gerçek kullanıcı verisi kullanıyor mu?+

Hayır. Her kamuya açık toplam source=global filtreler; bu yalnızca PRO sıralamalarından otomatik örneklenen savaşları içerir. Premium kullanıcıların özel savaşları source=user ile saklanır ve asla kamuya açık sayfalara geçmez.

Supercell yeni bir brawler çıkardığında ne olur?+

Brawler listesi resmi API'den gelir, dolayısıyla tam roster lansman gününde sitede görünür. Nadirlik ve görseller Brawlify'dan gelir ve bir-üç gün gecikebilir; o ilk günler için fallback olarak yerel bir nadirlik haritası (BRAWLER_RARITY_MAP) tutarız.

Bazı trendler neden yüzde yerine tire gösteriyor?+

Trendi yalnızca 14 günlük pencerenin her yarısında source=global'de en az 3 savaş varsa gösteririz. Bir brawler nadir görüldüğünde zayıf sinyalli sayı yerine hiçbir şey göstermeyi tercih ederiz.

Site açıklamaları üretmek için yapay zeka kullanıyor mu?+

Açıklamalar kendi verilerimizden dinamik üretilir (en iyi harita, en iyi mod, brawler başına Bayesian WR). Brawlify'dan veya wiki'den metin kopyalamayız ve içerik şişirmek için dil modeli kullanmayız.

Sorular veya düzeltmeler?

Metodolojik bir hata fark edersen veya bir iyileştirme önermek istersen bize yaz. Bu sayfayı verilerin hesaplanma şeklindeki her ilgili değişiklikle senkron tutuyoruz.