Sanal bir dünya inşa etmek: "Dijital tanrılara" zaman ayırmak için blockchain teknolojisi nasıl kullanılır?

Orijinal adres:

Çeviren: Justin @captainz

Sanal dünyaların yaratıcıları olarak amacımız, kullanıcılar için eğlenceli ve son derece ilgi çekici ortamlar yaratmaktır. Bu, karmaşık ve beklenmedik davranışların ortaya çıkmasına izin veren dijital fizik tasarlama ile mevcut altyapının bu davranışları destekleyebilmesini sağlama arasında bir denge bulmamızı gerektiriyor. Bunu yapmak için, dijital fiziğin üç ana boyutunu dikkate almamız gerekiyor: zaman, yasalarının biçimi ve bu yasaların uygulanma kapsamı.

zaman

Sanal dünyada zamanın geçişine, dünya yasalarının yinelemeli olarak kendisine uygulanması olarak atıfta bulunuyoruz. Her ayrık uygulama, bu dünyadaki zamanın akışında bir "an" dır. Dünyadaki zamanı tasarlamanın bir yolu, onu dış zamanla sürekli hale getirmektir. Blok zinciri tabanlı bir sanal dünyada, blok hangi işlemleri içerirse içersin, her blok dünyadaki belirli sayıda geçmiş ana karşılık gelir. Bu, eşzamanlı zaman veya "kene" fenomeni olarak bilinir. Bu yaklaşım, eylemlerinin sonuçlarını gerçek zamanlı olarak görebildikleri için dünyayı kullanıcılar için daha ilginç hale getirebilir. Artı, dünyada daha uzun bir süre ile sonuçlanır ve dünya sürekli güncellenir, bu da ilginç davranışları teşvik eder.

Ancak, bu yaklaşımın dezavantajları da vardır. Daha büyük zaman çerçeveleri, genellikle zincirin veya sunucunun yeteneklerini hızla aşabilen daha fazla bilgi işlem kaynağı gerektirir. Bu sistemi normal bir blok zincirinde uygulamak da zor olabilir, çünkü zincir üzerindeki tüm değişikliklerin harici kullanıcılar tarafından başlatılan işlemlerle başlatılması gerekir.

Bu zorluk, görünüşte basit bir şey hayal ettiğinizde belirginleşir: oyuncu olmayan karakterlerin (NPC'ler) olduğu zincirleme bir oyun. Ana ağ Ethereum'da, oyun haritasındaki her NPC'nin konumunu belirleyen bir güncelleme işlevi tanımlayabilir ve konumlarını güncellemek için harici bir hesabı periyodik olarak çağırmasını sağlayabilirsiniz. Ancak bu güvenilir olmayabilir, çünkü güncellemeyi çağırması gereken bloktaki gaz ücreti için harici hesabın teklif vermeyeceğini garanti edemezsiniz. Bu nedenle oyununuzdaki zaman yapısı kayar (örnek olarak orijinal CryptoKitties giveBirth() işlevini alın; zincir üstü gas ücreti arttıkça, Axiom Zen'in yeni NFT'nin çalışmasını sağlamak için giveBirth işlevini çağırma ödülünü artırması gerekir. Doğum işlemi, kullanıcı Kitty'yi doğurduktan sonra 256 blok olarak adlandırılır). Bu harici hesap kullanma yöntemini "manuel işaretleme" olarak adlandırıyoruz.

Özel toparlamalar bize zincir üzerinde "kene" işlevselliği eklemek için daha fazla esneklik sağlar, harici hesaplara gerek yoktur ve senkronize zaman ilerlemeleri protokol tarafından garanti edilir. Bu yönteme "auto-tick" diyoruz. Otomatik tikler, harici bir hesap yerine protokolün kendisi tarafından çağrılan bir "tik kontratı" yazılarak uygulanabilir.

Örnek olarak, @therealbytes, Conway'in Game of Life'ın otomatik olarak işleyen bir uygulamasını çalıştıran OP Stack'e dayalı bir kavram kanıtı tickchain geliştirdi (bunun bir video demosunu burada bulabilirsiniz). Bytes, tik-tik hücresel otomat simülasyon sözleşmesini otomatik olarak başlatmak için değiştirilmiş bir sistem işlemi kullanır. Zincirin sınırlarını tam olarak test etmek için oyunu iki şekilde uyguladı: biri zincir üzerinde çalışan bir Solidity akıllı sözleşmesi olarak, diğeri ise zincirin kendisinin bir ön derlemesi olarak. Solidity uygulaması, blok başına iki güncellemeyle (1 blok/sn veya yaklaşık 10k hücre/sn) 70x70 ızgaraya ulaştıktan sonra CPU'yu maksimize ederken, özel önceden derlenmiş motorun zinciri yaklaşık %6 kullanıyor. daha yüksek CPU'lu ızgara (yaklaşık 130.000 hücre/sn).

Son paragrafın son cümlesinde anahtar kelime “sınıra ulaşmak”tır. Tik-tik zincirleri, ekstra bir karmaşıklık katmanı ekler: Her ek blok, oyunu simüle eden işlemlerle daha fazla duruma dokunulmasını gerektirir. Sonuç olarak, toplama düğümleri ham hesaplama (CPU, disk IO, vb.) ile sınırlandırılacaktır. Buradaki tek çözüm, daha yüksek kapasiteli düğümler kullanmaktır.

"Senkron zaman"ın bir alternatifi "asenkron zaman"dır. Bu şemaya göre, dünyadaki zamanın geçişi, dış zaman ilerledikçe zorunlu olarak ilerlemez. Bunun yerine, belirli olaylar (genellikle kullanıcı eylemleri) meydana geldiğinde zaman genellikle ileriye doğru hareket eder. Zamanlayıcı içermeyen geleneksel tahta oyunları da benzer bir kategoriye girer. Zincirde eşzamansız zamana ulaşmak daha kolaydır çünkü blok zincirlerinin desteklemek için tasarlandığı model budur. Bununla birlikte, dünyayı daha ilginç hale getirebilecek bazı özelliklerden de ödün verir (otomatik olarak hareket eden NPC'ler gibi).

@notdavidhuang ve cha0sg0d'nin kavram kanıtlama oyununun erken bir versiyonu olan WildWood, bu fedakarlığı ortaya koyuyor. Bu oyunda, iki oyuncu üssünü saldırgan NPC kuşatmasına karşı korumalıdır. Oyunun önceki sürümlerinde, NPC hareketi yalnızca oyuncu kendini hareket ettirdiğinde tetikleniyordu - eşzamansız zamanın pratik olmayan bir uygulaması. İşaretler ekledikten sonra NPC'ler hareket etti, ancak başka bir sorun devam etti. Zincir her saniye tikler, yani oyuncu saniyede bir defadan fazla hareket ederse, oyun oyuncunun haritadaki konumunu iyimser toparlamadan gelen güncellemelerle yayınlamalıdır. Ancak takım arkadaşlarınız müşterinizi otomatik olarak görmeyecek, bu da oyuncu konum güncellemelerinde gecikme olacağı anlamına geliyor. Bu sorunun üstesinden gelmek için ekip, yerel istemcileri tam zincire yayınlamak için eşler arası bir ağ olan MUD'nin aktarma hizmetini kullandı. İşte, asenkron zamandan senkronize zamana geçiş tamamlandı.

Kapalı ve açık form kanunları

Dünyayı inşa edenler ayrıca sanal dünyalarının açık biçimli mi yoksa kapalı biçimli bir temsili mi izleyeceğine karar vermelidir. Kapalı biçimli ifadelerin sabit sayıda işlemi vardır. Ancak açık formda (veya yinelemeli) ifade edilen işlem sayısı verilen değişkenlere göre artmaktadır. Açık biçimli gösterimler altında, dünyanın gelecekteki durumu ancak dünya yasalarının bilinen durumlara tekrar tekrar uygulanmasıyla hesaplanabilir. Cüce Kalesi gibi karmaşık grafik ortamlar genellikle bu kategoriye girer. Öte yandan kapalı biçim temsilleri, Age of Empires II'deki kaynak çıkarma oranları gibi, gelecekteki herhangi bir durumun geçmiş durumlardan ve bunlar arasında geçen süreden (gelecekteki hiçbir kullanıcı eyleminin durumu değiştirmediği varsayılarak) hesaplanmasına izin verir.

Açık formlar sanal dünyaları daha ilginç hale getirebilir çünkü gerçek dünya gibi bunlar da öngörülemez. Dünyanın gelecekteki durumunu tahmin etmek, giderek daha fazla zaman ve bilgi işlem kaynağı gerektirir (Conway'in zincir üzerinde uyguladığı Game of Life iyi bir örnektir: oyunu zamanında çalıştırmanız gerektiğinden, gelecekteki keyfi durumları hesaplayamazsınız). Ayrıca, basit mikroskobik etkileşimlerden beklenmeyen makroskopik davranışlar ortaya çıkabilir. Kapalı bir biçim tarafından yönetilen bir dünyada, bu ortaya çıkan davranışlar genellikle yalnızca kullanıcıların eylemleri aracılığıyla (açık biçimde kendileri) gerçekleşir ve dünya fiziğinin kendisinde olmaz.

Açık ve kapalı biçimler arasındaki değiş tokuş, zamanınkine benzer bir denge içerir. Kapalı formlar, dünyayı potansiyel olarak daha az ilginç hale getirebilir, ancak aynı zamanda onu hesaplama açısından daha verimli hale getirir. Kapalı form, senkron veya asenkron zamanla kullanılabilir. Bir blok zincirinde uygulandığında, zaman senkronizasyonu söz konusu olduğunda açık formlara göre önemli avantajlara sahip olurlar. Maliyet, herhangi bir süre boyunca sabit olduğundan, dünya, zincir üstü durum yalnızca bir kullanıcı bir işlem gönderdiğinde güncellenecek, ancak son güncellemeden bu yana geçen sürenin ardından duruma ayarlanacak şekilde tasarlanabilir.

Zaman ve şekil aralığı

"Tembel güncellemeler" olarak bilinen bir yaklaşım olan zincir üstü dinamiklere yönelik mevcut standart yaklaşımı göz önünde bulundurun. Yavaş bir güncellemede, oyuncu bir eylemin başlangıcını ve bitişini başlatır, ancak aradaki zamanlar doğrudan hesaplanmak yerine simüle edilir. Örneğin, bir oyuncu 1. parçaya bir elma ağacı diker ve ardından 10. parçadaki elmaları toplar. Tembel güncelleme mantığı, oyuncuların zaman birimi başına bir elma, toplam 9 elma hasat edebilmesi için yazılabilir. Bu, kapalı form işlevlerine sahip (blok başına bir elma gibi) güncelleme mantığı için mükemmel bir şekilde uygundur, ancak çiftçilik mantığı oyuncu eylemleri arasındaki girdiye göre değişirse başarısız olur. 5. blokta şiddetli bir yağmur elmaların büyüme oranını artırıyorsa ve 7. blokta bir çekirge salgını mahsulü neredeyse yok ediyorsa, o zaman 10. blokta oyuncunun ne kadar elma toplayabileceği önemli değildir Hesaplamalı, eğer gerçekten uygulamazsanız gerçekleşen olaylar (yeni duruma yetişmek için yeterli bilgi işlem gücünüz olmayacak). Yine de tembel güncellemeler, belirli çetelerin (sabit büyüme hızına sahip bitkiler gibi) ucuz hesaplamaları için harikadır, ancak yine de dinamik bir dünya için eksiksiz bir araç kutusu için yeterli değildir.

Gerçek dünyada, zaman her yerdedir ve bir anda geçer ve evren (bazı görelilik komplikasyonları olsa da) potansiyel olarak sonsuzdur. Ancak sanal bir dünyada durum böyle olmayabilir.

İlk olarak, sanal dünyalar belirgin bir şekilde sınırlandırılabilir. Entrika olasılıkları genellikle boyutla birlikte artar - 20 milyar galaksiden oluşan bir dünyada iki atomdan oluşan bir dünyada olduğundan daha fazla şey oluyor - ama hesaplama maliyeti de öyle. Bu ilişkilerin her ikisi de daha önce bahsedilen iki değiş tokuşla yakından ilişkilidir: zamanın geçişi ve fiziksel biçim.

İkincisi, sanal dünyada zamanın her yerde geçmesi gerekmiyor. Dünyanın hesaplama yükünü azaltmak için dünya, farklı zaman dilimlerine sahip ayrık bölgelere bölünebilir. Örneğin, kullanıcı etkinliği olan alanlarda daha karmaşık ve pahalı fizik kuralları, etkinliğin olmadığı yerlerde ise daha basit fizik kuralları kullanılabilir. Bu yaklaşımın dezavantajı iki yönlüdür: dünyanın tutarsız görünmesine ve bütünlükten yoksun görünmesine neden olabilir, bu da dünya kuralları için tasarım alanını sınırlar ve kullanıcıların kafasını karıştırmaktan kaçınmak için dünya kurucuları üzerinde baskı oluşturur; bir alanın uzak bölgelerde sonuçları olamaz, ikisi arasındaki boşluk zamanda donmuştur. Fizik kurallarının uygulandığı alanın boyutu, bir dünyanın ihtiyaç duyduğu kaynakları ve elde edebileceği eğlence düzeyini etkileyecek önemli bir tasarım düşüncesidir.

Sanal bir dünya inşa etmek: "Dijital tanrılara" zaman ayırmak için blockchain teknolojisi nasıl kullanılır?

İlginç ve ilgi çekici bir sanal dünya yaratmak için hesaplama verimliliği ile eğlenceyi dikkatli bir şekilde dengelemek gerekir. Bu, ne tür bir zamanın kullanılacağına (eşzamanlı veya eşzamansız) karar vermeyi ve dünyayı yöneten fizik yasalarının şeklini değerlendirmeyi içerir. Fizik kanunlarının uygulanacağı alanın büyüklüğü de bir diğer önemli karardır. Dünyayı inşa edenler, bu seçimleri dikkatli bir şekilde yaparak, yalnızca dünyanın hesaplama yükünü yönetmek için ilginç kılmakla kalmaz, aynı zamanda diğer geliştiricilere inovasyon için oldukça verimli bir temel sağlayabilirler.

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)