Woonzero zaten aktif bir sosyal platformdu ama oyun bulma ayrı bir katman değildi; gönderi oluşturma ekranında oyun seçici olmadığı için hangi gönderinin hangi oyuna ait olduğu büyük ölçüde belirsiz kalıyordu. Platforma oyun kimliği, filtrelenebilir takım arama ilanları ve ilan dolduğunda otomatik açılan bir grup sohbetinden oluşan omurgayı ekledik.
Problem
Oyun katmanı yok, arama dağınık
Çözüm
Oyun kimliği + filtreli ilan + grup sohbeti
01Problem
Oyun bulmak, gönderiler arasında kaybolan bir şanstı.
Woonzero'da takım arkadaşı arayan biri, oyun etiketi olmayan genel akışta yoruma ya da doğrudan mesaja güveniyordu; gönderi oluşturma ekranında bir oyun seçici bulunmadığı için oyun bulma, platformun geri kalanından ayrı bir katman değildi. Rol, rütbe ya da müsait saat gibi bir filtre yoktu; doğru insanı bulmak aramaktan çok şansa kalıyordu.
Genel gönderiYorumDoğrudan mesaj
Oyun etiketi yokfiltrelenemiyor · şans işi
Rastgele bulunan oyuncu
temsilî akış
02Kısıtlar
Tasarımı üç kısıt belirledi.
K1
Oyun kimliği bugün beyana dayanıyor
Riot ya da Steam gibi harici servislerle rütbe doğrulaması ayrı bir iş kalemiydi; rütbe ve rol bilinçli olarak kullanıcı beyanına bırakıldı, doğrulama rozeti yol haritasına ertelendi. İlan sahibi, başvuranın beyanına güvenip kararını ona göre veriyor.
K2
Dört dil aynı anda güncel kalmalı
Topluluk dört dilde konuşuyor; ilan ve rehber içeriğinin hepsinde eş zamanlı ve güncel kalması gerekiyor. Eksik bir çeviri anahtarını derleme sırasında yakalayan bir test bu disiplini koruyor; çevirinin kendisi yine elle giriliyor.
K3
İlan listesi çöplüğe dönmemeli
Sınırsız açık ilan listeyi hızla kullanılmaz hale getirir; her ilana bir sona erme zamanı eklendi ve durumu, ayrı bir zamanlayıcı yerine okuma anında hesaplanan bir geçişle güncelleniyor.
03 — Yaklaşım
İlan, oyuncuyu değil rolü arar.
Oyuncu önce oyun kimliğini bağlar, sonra rol, rütbe aralığı ve saat belirten bir takım arama ilanı açar. Katılım, ilanda seçilen moda göre değişir: bazı ilanlarda boş role doğrudan girilir, bazılarında oyuncu başvurur ve ilan sahibi onaylar ya da reddeder. İlan oluşturulduğu anda otomatik bir grup sohbeti de açılır; kadro dolduğunda oyuncular zaten aynı sohbetin içindedir.
Feed sıralaması önce en çok beğenilen gönderileri en üstte tutuyordu; platform büyüdükçe bu tek kural, eski gönderilerin sonsuza dek tepede kalmasına yol açan somut bir kusura dönüştü. Hacker News tarzı bir formül, Wilson/Bayesian oran tahmini ve tek formüllü yavaş azalma da denendi; hiçbiri elimizdeki veri modeline (dislike ya da görüntülenme yok) ya da yılların birikimine uymadı. Bugünkü sıralama, zaman-değişmez bir skor, ilgi puanı ve eski ama etiketli gönderiler için ayrılmış küçük bir kotadan oluşuyor.
04Ekranlar
Rol boş kaldığında hemen görünmeli.
eksik var mı?
4 kişiyiz
kanka eksik var mı bu akşam
biz 4 kişiyiz, destek lazım
rankı ne olsun peki
Takım ilanı
NovaTRAçık
KaanQDolu
Ayça V.Açık
Takım ilanı
NovaTR · Destek · ElmasAçık
KaanQ · Nişancı · AltınDolu
Ayça V. · Tank · ElmasAçık
Deniz O. · Nişancı · GümüşDolu
Baran K. · Destek · AltınAçık
Sohbetteki takım arama isteği, açık/dolu rozetli bir ilan listesine dönüşür.
Oyuncu profili
NoNovaTRDestek · Elmas
Oyun kimlikleri
ValorantNovaTR#EU1bağlı
League of LegendsNovaTRbağlı
CS2steam/novatrbağlı
Geçmiş takımlar
Kuzey KurtlarıGece VardiyasıMor Takım
Bağlı oyun kimlikleri sırayla eklenir, geçmiş takımlar aynı profilde görünür.
05Ne öğrendik
Bir sonraki projeye taşıdıklarımız.
01Zamanla bozulacağını bildiğimiz basit bir kuralı ('en çok beğenilen') olduğu gibi bırakmıyoruz; feed sıralamasında birden çok alternatifi gerçek veri üzerinde eleyip zaman-değişmez bir formüle geçtik.
02Depolama sağlayıcısını yalnız birim fiyattan seçmiyoruz; bu ölçekte egress ve entegrasyon maliyeti, birim fiyat farkından daha belirleyici çıktı.
03Dil başına ayrı bir veritabanı kolonu tutmak yönetilemez hale geliyor; gömülü i18next ve derlemede eksik anahtarı yakalayan bir test, dört dili eşit tutmanın daha sürdürülebilir yolu oldu.