Tüm zincir oyununun "durumu" nasıl senkronize edilir?

Fiona tarafından, IOSG Ventures

TL;DR

*Tam bir oyun zinciri/özerk dünyalar ("FOG/AW"), Web 3'ü çevreleyen birkaç önemli anlatıdan biridir. Yalnızca NFT aracılığıyla Web3'e bağlanan Web2.5 uygulamalarıyla karşılaştırıldığında, FOG/AW oyun mantığını zincire oturtur. Blok zincirini bir oyun sunucusu olarak kullanır ve oyunun durumu için merkezi olmayan bir güven kaynağı haline gelir. Bu, kalıcılık, sansüre dayanıklılık, şekillendirilebilirlik vb. avantajlar sağlar, ancak bunun üzerine inşa edilen oyunların çeşitliliğini ve karmaşıklığını da sınırlar.

  • Oyunun artan karmaşıklığı ve oynanabilirlik gereksinimleriyle birlikte, motor mimarisi için çerçeve gecikmesi, rastgele sayı, sağlık iyileştirme, sürekli pasif etki, zamanlayıcı vb. Blok zincirinde zaman kavramı ve Ticks birimleri farklıdır. Mud, zamanın geçişini ve pasif iyileşme becerilerini simüle etmek için pek çok fikir sunar. Örneğin, oyuncu odada hareket ettiğinde, işlem odadaki tüm eşyaların önceden tanımlanmış bir tasarıma göre taşınmasıyla gelir. Zaman ve durumdaki değişiklikleri algılamak için bunu kullanın.
  • FOG/AW teknolojisi yığını şu şekilde özetlenebilir: geliştiriciler, ui/ux ve oyun çekirdeği mantığı için ön uç ve arka uç kodları yazar, ardından tüm değişiklikleri oyun durumu döngüsü aracılığıyla senkronize eder ve son olarak yeni durumu dizin oluşturucu tarafından ön uç yerel cihaza yansıtır.
  • RTS gibi birçok oyun türü yüksek tıklama oranları gerektirdiğinden ve fikir birliği ile üretilen blok zincirleri yalnızca blok sürelerindeki değişiklikleri işleyebildiğinden, tıklama oranı burada çözülmesi gereken büyük bir sorundur. Curio ve Argus bu konuda liderler ve fumble zinciri seviyesinde oyun hızlarını artırıyorlar. Mud, tüm zinciri maksimize etmeye çalışıyor ve tüm uygulama durumu EVM'de depolanıyor. Oyun için daha yüksek bir geçiş hızı elde etmek için zincir dışı entegrasyon sunma planı yoktur.
  • Farklı zincirlerin seçimi için Dojo, Starknet'in tüm zincir ekolojisine öncülük etmektedir. @tarrenceva'nın açıklamasına göre, Starknet, iyimser toparlamalardan farklı olan ve girdi yerine yürütme çıktısına odaklanan Durum farklılıkları durum farklılıklarına sahiptir. Örneğin bir satranç oyunu gibi oyunlar üzerindeki etkinin öncelikle maliyeti optimize etmesi muhtemeldir: üç dakikalık bir oyunda 50 hamle gerçekleşebilir. Durum farklılıkları sayesinde, tek bir ispat ve nihai durum "çıktıyı" ispatlayabilir. Öte yandan iyimser toparlamalar, tüm ara durumlardan "girdiler" gerektirir.

FOG/AW tanımlayın: oyun durumu nasıl senkronize edilir

SİS olup olmadığına karar vermeyi düşünüyorum, kıyaslama oyun durumunun nasıl senkronize edildiğidir (gerçeğin kaynağı).

Web 2.5 oyunları veya geleneksel çok oyunculu oyunlar için, geçerli oyun durumunu tanımlayan merkezi bir sunucu vardır ve oyuncular eylemler gönderdiğinde, sunucu bu girdileri derler ve her bağlı oyuncunun cihazına güncellenmiş sonuçlar döndürür. Sunucu tüm girdileri (tıklamaları) işler, tutarsızlıkları çözer ve periyodik olarak oyuncuya güncellemeler göndererek oyundaki tüm öğelerin anlık görüntüsünü sağlar ve her tıklamada oyun durumunu günceller. **oyun durumu ("oyun durumu veya tik"), oyun dünyasındaki her nesnenin özelliklerinin zamanındaki anlık görüntüsüdür. Tickrate, oyun sunucusunun güncellenmiş oyun durumunu hesaplayıp oyunculara saniyede yayınlama sayısıdır. Tickrate ne kadar yüksek olursa, oyun deneyimi o kadar kesin ve aslına uygun olacaktır. Genel olarak, gerçek zamanlı strateji veya aksiyon oyunları yüksek gerektirir. kart oyunları gibi sıra tabanlı oyunlar tıklanmaz.

Tüm zincir oyununun "durumu" nasıl senkronize edilir?

Kaynak:

Tamamen zincir üzerinde çalışan oyunlar için blok zinciri oyun sunucusudur ve oyun durumu için merkezi olmayan bir güven kaynağı görevi görür. Bu durumda, yalnızca NFT'ler veya jetonlar gerçek mülkiyete sahip olmakla kalmaz, aynı zamanda oyuncunun tikleri ve oyun mantığı bile zincirdedir. Bu nedenle gerçek sahiplik, sebat, sansür direnci, hesaplanabilirlik ve daha fazlası mümkündür. İdeal olarak, bir oyuncunun her eylemi blok zincirine gönderilmelidir ve bir fikir birliğine varıldıktan sonra oyun durumu güncellenir ve yerel cihaza geri döndürülür. Bu nedenle, doğal olarak, daha az tıklama hızı gerektiren oyun türleri, tamamen zincir üzerinde oynanmaya daha uygundur.

** Oyun gecikmesi, süre vb. zorlukları çözün.**

Oyun karmaşıklığının ve oynanabilirlik gereksinimlerinin artmasıyla birlikte, motor mimarisi için çerçeve gecikmesi, rastgele sayılar, can kurtarma, sürekli pasif etkiler, zamanlayıcılar vb. gibi daha fazla zorluk ortaya çıkıyor.

Çerçeve numarası gecikmesi Aslında, istemci oluşturma ve kullanıcı işlemlerindeki gecikmeler de dahil olmak üzere Web2 dünyasında da çok yaygındır. Özellikle FPS gibi yüksek geçiş hızına sahip oyunlarda, bir kez gecikme olduğunda oyuncu deneyimi çok zayıf olacaktır.Web2'deki çözümlerden biri, oyuncunun adil deneyimini çözmek için tüm oyuncuların oyuncular arasındaki en yüksek gecikme standardına göre senkronize edilmesini sağlayan kilit adımlı durum güncellemesidir. Bu gecikme, blok zinciri tanıtıldığında ve işlemlerin onaylanması gerektiğinde daha da kötü olabilir. Bu amaçla Mud, oyunlarda yaygın olarak kullanılan iyimser işleme mekanizmasını da ekleyerek, kullanıcının işleminin başarılı olduğunu varsayar ve sunucu kabul etmeden (veya bu durumda işlem onaylanmadan önce) istemcide işler.

Zincir üzerinde rasgele sayılar oluşturma sık sık tartışılan bir konudur. Mud, kullanıcı davranışının, etkileşim gerçekleştikten sonra üretilebilen rasgele sonuçların girdisi olarak kullanılabileceğine inanır.

Zaman kavramı ve Tikler blok zincirinde farklıdır. @SebastienGllmt, dolandırıcılığa karşı korumalı konseptler (Oper gibi) kullanan zincirlerde zamanlayıcı kullanmanın zor olduğunu düşünüyor çünkü bir şeyler ters gittiğinde geri alınması gerekecek. Oyunda zamanlayıcılar kullanılırsa, deneyim zayıf olacaktır. Mud, zamanın geçişini ve pasif iyileşme becerilerini simüle etmek için pek çok fikir sunar. Örneğin, zaman içinde artan altın paralar, oyuncu altın para gerektiren bir işlemi her gerçekleştirdiğinde, oyuncunun önceki altın para sayısına, en son yenileme sayısına ve yenileme hızına göre oyuncunun altın para miktarını hesaplayın. Başka bir örnek olarak, oyuncu odada hareket ettiğinde, işlem odadaki tüm eşyaların önceden tanımlanmış bir tasarıma göre taşınmasıyla gelir. Zaman ve durumdaki değişiklikleri algılamak için bunu kullanın.

** "Hile" yapmak için komut dosyası yazmak sorun olmayabilir. **@BriefKandle, oyun sisteminin MEV'sinin hile yaptığını düşünmüyor. Basit komut dosyalarıyla MEV'yi önlemek, oyun ekibinin dikkate alması gereken bir şey. Web2 oyun geliştirmenin düşünce biçimini değiştirmesi gerekiyor. İyi bir MEV botu, oyundaki bir NPC'dir.

Bu işlevselliğin bir kısmı, zamanlayıcıları ve sürekli pasif efektleri kullandıkları Rhascau gibi yakın zamanda piyasaya sürülen bazı zincir üstü oyunlarda uygulanmıştır. Temel olarak blok süresini bir onay işareti olarak kullanmak. (Geçerli L2'de, blok süresi = tıklama hızı).

FOG/AW teknolojisi yığını

FOG/AW motoru çerçevesi, geliştiricilerin blok zincirini bir sunucu ve güven kaynağı olarak kullanarak oyunlar oluşturmasına olanak tanıyan bir geliştirici araç yığınıdır. Ayrıca, bazı mevcut sorunları çözebilir:

  • Standart/hazır çerçeve eksikliği nedeniyle zincir üzerinde FOG/AW oluşturmada verimsizlik;
  • Modülerlik eksikliği ve kodun yeniden kullanımı;
  • Birleştirilebilirlik eksikliği. FOG/AW motorunun geliştirilmesiyle zincir üstü oyunlar daha ilginç ve yaratıcı olabilir.

Anlama kolaylığı açısından, bu tür bir motorun genel olarak basitleştirilmiş teknik süreci şöyledir: geliştiriciler, ui/ux ve oyun çekirdek mantığı için ön uç ve arka uç kodları yazar ve ardından tüm değişiklikleri oyun durumu döngüsü aracılığıyla senkronize eder ve son olarak dizinleyici tarafından yeni durumu ön uç yerel cihaza yansıtır.

Tüm zincir oyununun "durumu" nasıl senkronize edilir?

Blockchain üzerinde çalışan oyunların sorunsuz çalışması için Mud, Dojo, Curio, Argus, Paima motoru ve Lootchain bu amaçla kendi teknoloji yığınlarını geliştiriyor. Teknoloji yığını 3 temel bölümden oluşur: zincir, çekirdek geliştirme yığını ve oyun ön ucu. Hepsinin kendi yenilikleri var, ademi merkeziyetçilik ve oyun karmaşıklığı arasında ödün veriyorlar.

  • Oyun ön yüzü: Oyun oynanabilirliğini ve deneyimini geliştirmenin vazgeçilmez bir parçası olan işleme ve diğer işlevleri sağlamak için Unity, Unreal vb. gibi geleneksel motorları ve tepki/Threejs ve diğer dilleri ve güçlü araçları içerir. Yukarıdaki projeler temel olarak geliştiricilerin kullanması için ilgili SDK'ları sağlayabilir.
  • Çekirdek geliştirme yığını: Oyun mantığının blok zincirinde çalışmasına ve ön uçla zamanında senkronize olmasına olanak tanıyan bir dizi çözüm tasarlayın. Anahtar bileşenler, uygun bir veritabanı yapısını (oyun davranışını ve mantığını tanımlayan) ve senkronizasyonu ve oyun durumunun geri dönüşünü içerir.
  • Zincir: Çoğu Ethereum, Optimism ve Starknet üzerine inşa etmeyi seçiyor.

Aşağıdaki şekil, farklı protokollerin ilgili teknoloji yığınlarını nasıl tasarladıklarını göstermektedir. Çalışma akışını görmek için Mud V2'yi örnek olarak alın:

  1. Bir geliştirici, kod yazmak için Mud'daki bazı Web2 ön uç araçlarını arayacak ve oyunu daha görsel ve daha eğlenceli hale getirmek için işleme gibi bu güçlü işlevleri kullanacak;
  2. Aynı zamanda, geliştiriciler oyunun karakterlerini, öğelerini ve özel işlem mantığını Mud'un akıllı sözleşme çerçevesine (Mud World) göre yazacaklardır;
  3. Yukarıdaki eylemler ve oyun durumu, küresel oyun durumundan sorumlu zincir üstü bir veritabanı ve oyun durumu senkronizasyonu için bir güven kaynağı olan Mud Store'a kaydedilecektir;
  4. Kahraman A, Y'ye saldırdığında, oyuncu aslında ön uç yerel makinede fareyi tıklar ve zincire yüklenecek komutu gönderir.Komut, geliştiricinin oyun tasarım mantığına ve Mağazadaki mevcut oyun durumuna dayalıdır ve sonuç elde edilir.Sonuç, yeni oyunun küresel durumuna güncellenir ve zincirle senkronize edilir;
  5. Games on Mud, Web ve Mobil gibi çeşitli ön uçları destekler, ancak karmaşık indeksleme gereksinimleriyle karşılaşabilir.Mod, bu amaç için geliştirilmiş bir zincir dışı indeksleyicidir.

Tüm zincir oyununun "durumu" nasıl senkronize edilir?

Şimdi bu çekirdek çerçevelerin ortak ve farklı tasarımlarından bahsedelim.

  • Çoğu Mud v1 tasarımını takip eder ve ECS'yi oyun geliştirme için bir veri yapısı olarak kullanır. Oyun mantığı bu şekilde yazılır ve sunulur. Mud V2 bunu iyileştirmiştir ve veriler, geliştiricilere daha fazla seçenek sunan ve onu daha kapsayıcı hale getiren diğer veri standartlarına izin veren (V1 gibi ECS veri modelleme standardına uymak zorunda değildir) Tablolar ve s'de tanımlanmıştır.
  • Blok zinciri doğal olarak oyun durumu ve veritabanı için güven kaynağı olduğundan, çoğu merkezi olmayan veritabanlarını kullanır. Mud, tüm zinciri maksimize etmeye çalışıyor ve tüm uygulama durumu EVM'de depolanıyor. Oyun için daha yüksek bir geçiş hızı elde etmek için ademi merkeziyetçilikten veya zincir dışı entegrasyon şemalarının tanıtılmasından ödün verilmez.
  • FPS gibi birçok oyun türü yüksek tıklama oranları gerektirdiğinden ve konsensüsle üretilen blok zincirleri yalnızca blok sürelerindeki değişiklikleri kaldırabildiğinden, tıklama oranı burada çözülmesi gereken büyük bir sorundur. Yenilikçi tasarımlarında Curio ve Argus, zincir düzeyinde tik oranlarını artırmayı umut eden ilk kişilerdir.
  • Farklı zincirlerin seçimi için, hem Curio hem de Loot, Caldera'yı Op yığın zincirleri oluşturmak için kullanıyor.Ayrıca Dojo, Starknet'in tüm zincir ekolojisine liderlik ediyor. @tarrenceva'nın açıklamasına göre, Starknet, iyimser toparlamalardan farklı olan ve girdi yerine yürütme çıktısına odaklanan Durum farklılıkları durum farklılıklarına sahiptir. Örneğin bir satranç oyunu gibi oyunlar üzerindeki etkinin öncelikle maliyeti optimize etmesi muhtemeldir: üç dakikalık bir oyunda 50 hamle gerçekleşebilir. Durum farklılıkları sayesinde, tek bir ispat ve nihai durum "çıktıyı" ispatlayabilir. Öte yandan iyimser toparlamalar, tüm ara durumlardan "girdiler" gerektirir.

Halihazırda bu motorlar üzerine inşa edilmiş bazı oyunlar var. Hem Mud hem de Dojo, geliştiricileri uygulama geliştirmeye çekmek için hackathonlar düzenliyor. Curio, ETHCC'de Warcraft'ın mini oyun demosunu yayınladı.

Tüm zincir oyununun "durumu" nasıl senkronize edilir?

Açıkçası, FOG/AW halka açık zincir rekabeti için önemli bir ekoloji haline geliyor.Lattice tarafından önerilen AW (Otonom Dünya), oyunlarla sınırlı olmayan büyük bir kavramdır, aynı zamanda sosyal ve finansal gibi birçok özelliği de içerir. Bunun üzerine yaratıcı bir sanal dünya olan Metaverse inşa edilmiştir. Oyunlar, sosyal ağlar ve finans gibi bazı yeni entegre uygulama biçimlerini sabırsızlıkla bekleyebiliriz.

Referans:

View Original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Reward
  • Comment
  • Share
Comment
0/400
No comments
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate app
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)