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, gadgetlar, star powerlar, hyperchargelar, gearlar 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 (galibiyet / maç) küçük örneklerde yanıltıcıdır: yeni bir haritada 3-0 olan bir brawler "100 % WR" gösterir ama bunun bir anlamı yoktur. BrawlVision bunu düzeltmek için Bayesian yumuşatma kullanır ve çok farklı örneklem boyutlarına sahip brawlerlar arasında karşılaştırılabilir bir sayı döndürür.

Formül WR_bayesian = (wins + α) / (battles + α + β) olup α ve β, %50 WR civarında merkezlenmiş bir önsel inancı kodlayan hiperparametrelerdir. Pratikte α = β = 25, yani "gerçek veriyi görmeden önce 50 önceki savaşı 50/50 varsay" demek. 3 win ve 0 loss'lu bir brawler, naif 100 %'den (3 + 25) / (3 + 50) = %52,8'e geçer; bu da örneklemin gerçek durumunu çok daha iyi temsil eder.

Örneklem büyüdükçe önselin ağırlığı azalır: 1.000 savaş ve 530 win'de Bayesian WR (530 + 25) / (1.000 + 50) = %52,9 olur, naif %53,0 ile neredeyse aynı. Yumuşatma yalnızca örneklem gerçekten küçük olduğunda "acıtır". İstenen özellik tam olarak budur: gürültüyü cezalandır, sinyali değil.

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, gadgetlar ve star powerlar 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.