7 puan yazan GN⁺ 2023-10-19 | 1 yorum | WhatsApp'ta paylaş
  • Reflect, Figma, Notion ve Google Sheets benzeri çok oyunculu web uygulamaları oluşturmak için yeni bir çerçevedir.
  • Bu, istemci tarafı senkronizasyon çerçevesi Replicache'in gelişmiş bir sürümüdür ve çok oyunculu uygulama geliştirmeyi kolaylaştırmak için tamamen yönetilen bir sunucu ekler.
  • Reflect artık ilk kez herkese açık olarak kullanılabiliyor.
  • Bu çerçeve, işbirlikçi düzenlemede çakışma çözümü sorununu ele alır ve tüm kullanıcıların aynı içeriği görmesini, çakışmaların da doğal biçimde çözülmesini sağlar.
  • Reflect, CRDTs (Conflict-Free Replicated Data Types) gibi web ekosisteminde popüler araçlardan farklı olarak, video oyun endüstrisinde yaygın olan Transactional Conflict Resolution tekniğini kullanır.
  • Reflect'in kendine özgü avantajları ve farklılıkları, bu senkronizasyon motorunun çekirdeğindeki tasarım seçimlerinden kaynaklanır.
  • Reflect, değişiklikleri uygulamak için mutator adı verilen JavaScript fonksiyonlarını kullanır ve mutator çağrıldığında bir mutation record oluşturulur.
  • Mutation'lar yerelde uygulanır ve sunucuya akıtılır; sunucu ise geliş zamanına göre mutation'ları doğrusal hale getirerek bir sonraki yetkili durumu üretir.
  • Reflect, hızlı hareket eden uygulamaları işleyebilir ve önceki mutation'ların onayını beklerken yenilerini eklemeye devam eder.
  • Bu çerçeve, geri sarma, fork ve branch oluşturmayı destekleyen hızlı bir veri deposuna ve gelen mutation'lara yetişebilen hızlı bir sunucu tarafı veri deposuna ihtiyaç duyar.
  • Reflect'in yaklaşımı iyi genellenebilir; aritmetik işlemler, liste işlemleri ve üst düzey değişmezliklerin zorlanması gibi çeşitli görevler için uygundur.
  • Reflect'in sunucusu yetkilidir; mutation sonuçlarını kendisi yeniden hesaplar ve tüm istemciler bu sonuçları görebilir.
  • Bu sunucu otoritesi, ayrıntılı yetkilendirmeyi ve sunucuda başka kodların çalıştırılmasını mümkün kılar.
  • Reflect ayrıca şema doğrulama ve migration gibi avantajlar da sunar.
  • Reflect'in senkronizasyon stratejisi olan Transactional Conflict Resolution, basit, esnek ve güçlüdür; bu da onu çok oyunculu uygulamalar geliştirmek için iyi bir seçenek haline getirir.

1 yorum

 
GN⁺ 2023-10-19
Hacker News yorumu
  • Bu yazı, oyun tarzı senkronizasyona sahip çok kullanıcılı web uygulaması çerçevesi Reflect'i tartışıyor.
  • Ana sayfadaki Reflect demosu etkileşimli; kullanıcıların işleri tamamlamaktan heyecan duyduğunu gösteriyor ve bu da oldukça ilgi çekici.
  • Reflect açık kaynak değil; bu da temel altyapıda açık kaynak yazılımı önceliklendiren şirketlerde benimsenmesini sınırlayabilir.
  • Reflect daha önce Replicache adıyla biliniyordu ve artık hızlı bir senkronizasyon sunucusu içeriyor.
  • Bu çerçeve, kullanıcıların çakışmaları basit ve sıralı kodla nasıl ele alacaklarına karar vermesini sağlıyor; bu da CRDT'lere kıyasla bir avantaj olarak görülüyor.
  • Reflect'in veri modeli ve kodlama modeli, sadelikleri nedeniyle övgü alıyor.
  • Özellikle birden fazla kullanıcıdan eşzamanlı güncellemelerin geldiği senaryolarda, Reflect'te liste işlemlerini uygulamanın zorlukları tartışılıyor.
  • Bir kullanıcı, Reflect'te kullanılan kafa karıştırıcı terminolojiye dikkat çekerek oyun dışı yazılımlar için "multiplayer" yerine "çok kullanıcılı" ifadesini öneriyor.
  • CRDT kütüphanelerinde değişiklikleri doğrulayan merkezi bir otorite çoğu zaman bulunmadığı için, Reflect'in kimlik doğrulamayı nasıl ele aldığına dair sorular var.
  • Reflect'in stratejisi, oyun geliştirmede çok sayıda varlığın durumunu senkronize etmek için kullanılan "deterministik senkronizasyon" ile karşılaştırılıyor.
  • Reflect'in mutator yükseltmelerini nasıl yönettiği ve istemci ile sunucu işlemleri arasındaki olası uyumsuzlukları nasıl ele aldığı soruluyor.
  • Bir kullanıcı, çok oyunculu motorlarda yüksek frekanslı mesajlaşmayı işlemek için tarayıcı içinde UDP protokolüne ihtiyaç olduğunu söyleyerek TCP ve WebSocket ek yükünü eleştiriyor.