BOLT: Solana tabanlı ECS tam zincir oyun motoru

Video Bağlantıları:

Konuşmacılar: Andrea, Gabriele, Magicblock Kurucu Ortağı

演讲标题:ZINCIR ÜSTÜ OYUN IÇIN BIR ÇERÇEVE

Çevirmenin önsözü: "BOLT, Solana ekosistemi için Magicblock ekibi tarafından geliştirilmiş tam zincirli bir oyun motorudur. Bu makale, Magicblock'un iki kurucusunun Breakpoint 2023 etkinliğindeki sunumlarından derlenmiştir. "

Herkese merhaba, bu Cadılar Bayramı'ndan önceki son konuşma ve umarım konuşmanın içeriği herkes için ilginç olur. Benim adım Andrea ve kurucu ortağım Gabriele'yim. Bugün, yeni bir tam zincir oyun çerçevesi (motoru) tanıtacağız.

01.Neden tam zincir bir oyuna ihtiyacınız var

Temel bilgilerle başlayacağım, bu yüzden zincir üzerinde hem durum hem de mantık ile tam zincirli bir oyun oluşturmakla ve onunla birlikte gelen tüm karmaşıklıklarla uğraşmakla uğraşın. Bunun basit nedeni, geleneksel oyun altyapısının sahip olmadığı özelliklere sahip olmaktır.

İlk özellik izinsiz modlardır. Bu, tüm oyuncuların ve geliştiricilerin, gelişmiş istemciden başlayarak eklentiler veya modlar da dahil olmak üzere oyundaki herhangi bir bileşeni özelleştirebileceği anlamına gelir. Oyunun altında yatan mantık bile akıllı sözleşmelerle genişletilebilir. Esasen, her oyunun varsayılan olarak yeni bir platform olduğu yeni bir moddur ve ekibiniz ne kadar küçük olursa olsun bir İçerik Santrali olabilirsiniz.

İkinci özellik Kalıcılıktır. Özerk dünyalar ve bu sanal deneyimlerin sonsuza kadar var olabileceği gerçeği pek çok yankıya neden oldu. Hiçbir sunucu sansürlenemediği veya kapatılamadığı için, bu deneyimler aslında yepyeni bir anlam getiriyor. Oyunlar, oyuncuların geleneksel oyun platformlarından daha evrensel olan küresel ticaret oynamaları, sosyalleşmeleri ve yürütmeleri için bir platform haline geldi.

Son özellik açık ekonomilerdir. Oyunlar, blok zincirinin açık küresel sürtünmesiz ödeme sisteminden, özellikle ekosistemimizdeki mikro ödemelerden yararlanabilir ve DEX'ler veya NFT pazar yerleri gibi mevcut zincir üstü altyapıyı yeniden kullanabilir.

02.Mevcut Çözüm

Omnichain oyunlarla ilgili mevcut sorun, geliştirme deneyiminin çok kötü olması ve piyasadaki çözümlere bakıyoruz ve geliştirici deneyimini basitleştirmeye çalışan bazı geliştirme çerçeveleri olduğunu görüyoruz.

Bazıları, zincir dışı hesaplamalar yapabileceğiniz ve zincir üzerindeki hesaplamaların bütünlüğünü kanıtlayabileceğiniz kanıtlanabilir oturumları yinelemeye çalıştıkları için çok ilginçtir. Veya döngü tabanlı bir çalışma zamanı yerine blok zinciri oyun motorları için daha uygun olan olay odaklı bir çalışma zamanı sunun.

Ancak tüm bu çerçeveler, daha yüksek performans ve daha yüksek TPS elde etmek için performans ve birleştirilebilirlik arasında ödünleşimler gerektirir. Genellikle, bir yalıtım oluşturursunuz veya parçalarla farklı bir çalışma zamanı sunarsınız.

Ancak bu değiş tokuştan memnun değiliz. Kendimize sorduk, ya ihtiyacımız olan TPS'yi destekleyebilecek bir çerçeve olsaydı? Oyununuz başarılı olduğunda, milyonlarca oyuncuyla bile kullanıcı deneyimlerinden ödün vermek zorunda kalmazsınız çünkü gaz savaşları olmaz. Ve çerçeve parçalama ve parçalanma gerektirmez, bu nedenle kanıtlanabilir oyun oturumlarını kullanabilir ve hatta gaz ücreti ödemeden zamanın geçişini simüle edebilirsiniz. Sistemi parçalamaya veya Katman 3'ü kullanmaya gerek yoktur.

03.Solana'da tam zincir oyun geliştirme motoru: BOLT

Bu nedenle, SVM'ye dayalı yüksek performanslı, birleştirilebilir, tam zincirli bir oyun geliştirme çerçevesi olan BOLT'u tanıtmaktan heyecan duyuyoruz.

BOLT modüler ve şekillendirilebilir olup, Solana'daki mevcut tüm altyapıyı kullanmasına olanak tanır. Zincir üstü kimlik, gazsız API, oturum anahtarı gibi mevcut zincir üstü tesislerimizin yanı sıra mevcut Anchor geliştirme çerçevesi ve Solana'daki mevcut tüm programlarla çalışır. Her ikisi de, kullanıcının talep ettiği şekilde açılıp kapanan ve gerektiğinde ölçeklendirilen oyun oturumları olan Ephemeral Rollup'lar sayesinde daha yüksek bir büyüklük sırasına göre ölçeklendirilebilir.

BOLT yıldırım hızındadır ve belirli işlemleri hızlandırmak için bu özel çalışma zamanlarını kullanmadan önce geleneksel bir oyun motoruyla aynı performans seviyesine ulaşabiliriz.

Bu, BOLT çerçevesinin panoramik bir görüntüsüdür. Belli ki Solana için yaratılmış, ancak bunu SVM uyumlu Katman 2 gibi herhangi bir SVM uyumlu platformda kullanabilir. BOLT'un iki ana hedefi vardır: birleştirilebilirlik ve ölçeklenebilirlik.

ECS (Entity Component) sistemi, zincir üstü bileşenlerin kullanımını basitleştirmenin yollarından biridir. Diğeri ise daha önce kısaca bahsedilen Ephemeral Rollup'tır ve birazdan bu teknolojilerin her ikisine de dalacağım.

BOLT, genellikle oyunların ön ucu olarak hizmet veren Unity gibi en yaygın kullanılan eski oyun motorlarıyla entegre edilmiştir. Elbette bu, Godot ve Phaser gibi diğer açık kaynaklı ve sevilen oyun motorlarını da içerir. Bağımsız geliştiricilerin deneyimini iyileştirmeye ve hızlı oyun oluşturmayı kolaylaştırmaya odaklanan güncellenmiş bir oyun istemcisi olan Turbo ile bile çalışıyoruz. Gelecekte daha fazla ortak olabilir.

Buradan başlayacağım ve neden bir ECS varlık bileşeni sistemine ihtiyacımız olduğunu açıklamaya devam edeceğim. Cevap basit, çünkü maksimum birleştirilebilirliğe izin veriyor, bu da hazır bileşenler oluşturabileceğimiz ve yeniden kullanabileceğimiz anlamına geliyor.

Adından da anlaşılacağı gibi, ECS üç ana öğeye yerleştirilmiştir: esasen ayrı bir oyun dünyası örneğine kayıtlı tanımlayıcılar olan varlıklar, veri yapısını tanımlayan bileşenler, böylece temelde varlıkla ilişkili veriler ve son olarak, varlığa bağlı bileşenleri manipüle eden mantık olan sistem.

Bu mimarinin avantajı, tüm sistemlerin ve bileşenlerin yeniden kullanılabilir olmasıdır. Genel bir kayıt defterinde yayınlanabilirler ve geliştiriciler her tür bileşene kolayca katkıda bulunabilir, oluşturabilir, keşfedebilir ve entegre edebilir, böylece artık sıfırdan tek bir kod satırı yazmak zorunda kalmazsınız, ancak mevcut tüm bileşenleri yeniden kullanabilir ve sonunda bunlara katkıda bulunabilirsiniz. Örneğin, bir ızgara veri yapısına (bir labirent veya savaş alanı gibi), hareketli bir sisteme veya savaş sisi için sıfır bilgi kanıtı sistemine sahip olabiliriz.

04.BOLT Motor ECS Programlama Uygulaması

(Çevirmenin notu: Bu bölüm geliştiricilerin orijinal videoyu izlemesi için önerilir, geliştirici olmayanlar bu bölümü atlayabilir)

ŞIMDI IDE'ME GEÇECEĞIM VE SIZE BOLT ECS MOTORUNU KULLANAN BASIT BIR OYUN ÖRNEĞI GÖSTERECEĞIM.

Birkaç varlık, bir konum bileşeni ve bu konum bileşeni için verileri işleyecek ve değiştirecek iki sistem tanımlayacağız. Bu nedenle, ilk giriş noktası Dünya Programı ile etkileşime girmektir. Dünya Programı, BOLT çerçevesinin bir parçasıdır ve yeni Dünya Örnekleri kaydetmenize olanak tanıyan bazı çıkarımları ortaya çıkarır.

World Instance'ınıza varlıklar ekleyebilir ve bileşenleri, esasen bileşen programı tarafından tanımlanan, az önce tanımladığınız varlıklarla kaydedebilirsiniz. Bileşen programı iki yönerge içerir, bunlardan ilki bileşeninizde kullanılacak veri satırlarını depolamak için alan başlatma, oluşturma ve ayırmadır. Bu basit örnekte, bir konum bileşeni tanımlıyoruz ve başlatma yönergesinin bağlamına bakarsak, bileşen verisine sahip olduğumuzu görebiliriz ve bileşen verileri, örneğin oynatıcı konumunu depolayabilen XYZ koordinatlarına sahip bir yapıyı tanımlar.

Şimdi, ikinci direktif muhtemelen en ilginç olanıdır, herhangi bir mantığı yürütmemize izin veren bir giriş noktasıdır. Bileşenlerimizi ve rastgele sistemlerimizi girdi olarak alacak ve programlama konumları arasında yürüterek sistemde dahili olarak tanımlanan mantığı yürütecektir. Şimdi, 15. satıra bakarsanız, dahili olarak tanımlanmış mantığı CPI aracılığıyla yürütecek olan CPI (Ortak Programlama Arayüzü) çağrımız var. Sistem tarafından tanımlanan tüm hesaplamaları yapacak ve ardından bileşen programının onu alıp verilerimize geri koyacağı konumumuza geri dönecektir.

Şimdi, temelde sadece iki hesabımız olduğunu görebileceğimiz apply fonksiyonumuzun bağlamına bakmaya çalışalım. Birincisi, bileşenlerimizin verilerini içeren hesap, ikincisi ise sistem programıdır. Sonuç olarak, bir sistem programı artık tek bir programdan ziyade bir arayüzdür. Bu nedenle, BOLT sistem arayüzümüze bağlı olan herhangi bir program bu uygulama aracılığıyla yürütülebilir.

05.ECS sisteminin önemi

Esasen bu, oyununuzun mantığını tasarlama şeklinizi değiştirir ve geleneksel süreçleri tersine çevirir. Önceden, programınızda bir mantık oluşturmak veya kapsüllemek istiyorsanız, genellikle önce her biri programda bir yönerge olan özellikler eklerdiniz ve sonunda bir noktada geliştirmekte olduğunuz oyun programını kilitlerdiniz.

Bununla birlikte, ECS modeliyle, bunun yerine başlangıçtan itibaren değişmez bir programa sahip olabiliriz ve daha sonra bu proxy mekanizmasıyla, şirket içinde veya herhangi biri tarafından oluşturulmuş bir sistem ekleyebiliriz, böylece sonsuza kadar çalışabilen, ölçeklenebilir ve herkes oyunun mantığını gerçekten değiştirebilir.

Bu bileşenler üzerinde çalışacak yeni sistemler kurabilirler. Şimdi, arayüz ayrıca bazı kontroller yapmanıza izin veriyor, böylece bileşen verilerini değiştirebilen yeni sistemler eklemeyi izinsiz hale getiren bir oyun mekaniği tasarlayabiliriz.

Veya sistemin bileşen üzerinde yürütmeye izin verip vermediğini kontrol etmek için bir arayüz kurabiliriz. Örneğin, birisi yeni bir mantık öneriyorsa ve bu mantık onaylanırsa, tüm oyuncuların bu mantığı oyunda kullanabileceği bir yönetişim sistemi tasarlayabilirsiniz.

Bu, oyunun dünyasında bir çatallanmaya bile yol açabilir (Dünya Sözleşmesi). Bir dünyada, uçuş sisteminin sahibi sizsiniz. Ve başka bir dünyada, eğer sistem onaylanmazsa, farklı kurallara sahip olmak mümkündür ve herkes yine de kendi dünya versiyonuna katkıda bulunabilir.

Şimdi bu bileşeni değiştirebilecek bir sistemin nasıl oluşturulacağına bakalım. Sistem esasen Solana üzerinde bir yürütme talimatı tanımlayan bir programdır ve yürütme talimatı, CPI'daki (Ortak Programlama Arayüzü) bileşen programından çağırdığımız talimattır. Burada, giriş yönünü aldığı, deltayı hesapladığı ve ardından bileşenin X ve Y konumlarını değiştirdiği çok basit bir mantığı kapsüllüyor.

Öyleyse, oyunu piyasaya sürdükten sonra bile başka biri tarafından dağıtılabilecek başka bir sisteme göz atalım. İşte ute'yi uygulayan bir sistemin başka bir örneği. Burada, Z konumu 1 artırıldı, bu yüzden birisi oyununuzun üstünde farklı bir katmana sahip bir arayüz olabilecek bir kuşatma sistemi eklemeye çalışıyor.

Yani, şimdi fikir şu ki, tüm bu sistemler, tüm bu bileşenler gerçekten birleştirilebilir, oyunun kullanıcıları artık basit kullanıcılar değil, oyun açık, ölçeklenebilir ve kalıcı bir platform haline geldi. Bu yüzden bu örnekte hazırladığım birim testlerini yürütmeye çalışacağım ve Solana için akıllı bir sözleşme çerçevesi olan Anchor'un üzerine inşa edilen BOLT CLI'yi kullanacağım, bu nedenle Solana'ya zaten aşinaysanız, yeni bir şey öğrenmenize gerek yok.

Şimdi, Solana üzerinde programlar geliştirebilirsiniz, sadece programlar geliştirin, programları test edin, bu yüzden burada cıvata oluşturma ve cıvata testi yapıyorum ve burada programımızı dağıtıyorum ve sonra burada hazırladığım tip testini yapıyorum.

Yani, burada test yeni bir dünya başlatmak için bir işlem gönderiyor. Birkaç varlığı kaydediyoruz, bazılarına konum bileşenleri ekliyoruz ve belki de ilginç olan kısım burada bazı sistemler yapmak. Yani, burada apply fonksiyonunu çağırıyoruz ve sonra bu sistemlerden birini kullanıyoruz. Yani, burada sadece varsayılan bir sistem var.

Burada basit bir hamle diyoruz ve sonra burada bir hamle uçuruyoruz. Şimdi, testin günlüklerine bakarsak, ilk işlemde, burada yukarı yönlü hareketli bir sistem kullanıyoruz ve Y pozisyonunu 1 artırıyoruz. İkinci işlemde sağa doğru hareket etmek için aynı sistemi kullanıyoruz ve son olarak tam tersini yapan uçuş sistemini çalıştırarak Z konumumuzu 1 arttırıyoruz. Bu sadece basit bir örnek, ancak herkesin oyununuzu geliştirmesine, genişletmesine ve potansiyel olarak eğlenceli hale getirmesine olanak tanıyan çok güçlü bir mekanik sunuyor.

06.Geçici Toplama

Şimdi slayta geri döneceğimize göre, BOLT çerçevesinin ikinci ilginç yönünü, yani Ephemeral Rollup adını verdiğimiz ölçeklenebilirlik çözümümüzü anlatacağım.

Genel olarak Solana'nın zaten çok hızlı ve ucuz olduğu ve şu anda her 400 milisaniyede bir blok ürettiği ve binlerce işlemi işleyebildiği varsayılır, bu nedenle aslında tam zincir bir oyun oluşturmaya hazırdır. Ancak, çok oyunculu için eski bir mantıksal zinciriniz varsa, konum güncellemeleri çok yavaş olacaktır.

Böylece Solana'nın çalışma süresiyle tamamen uyumlu kısa ömürlü bir hızlandırma katmanı oluşturabiliriz. Kullanılan süre isteğe bağlıdır, mantığın çoğu hala ana zincirde yürütülürken, belirli bir işlemin gerçek bir hızlandırması olarak hizmet edebilir, bu nedenle Solana'daki tüm durumun hesapta saklanması özelliğine güvenir.

Normalde, mantığı tanımlayan bir oyun programınız olacak ve ardından tüm durum bu hesapta saklanacak, böylece bu hesaplardan bazılarını BOLT motorunu kullanan bu geçici katmana devredebiliriz.

Bu örnekte, oynatıcının konumunu depolayan iki yetkili hesap vardır ve sağlayıcı temsilci isteklerini ve sağlama isteklerini etkin bir şekilde dinlemektedir. İhtiyaç duyulduğunda hızlı, özelleştirilebilir, gaz işlemleri veya onay işaretleri olmayan ve gerçekten 50 ms'nin altında işlemler yapmamıza ve belki de birden fazla özel çalışma zamanına sahip olarak ölçeklendirmemize olanak tanıyan yeni bir çalışma zamanı başlatacak.

Şimdi, diğer ilginç kısım, tüm bu karmaşıklığın kullanıcıdan soyutlanabilmesidir. Esasen geleneksel bir RPC yönlendiriciye benzeyen bir RPC yönlendiricimiz var. RPC istemcisi, işlemleri göndermek için doğrudan RPC ile etkileşim kurabilir. Solana'da tüm işlemler, tüm değiştirilebilir ve okunabilir hesaplar için önceden bildirildiğinden, RPC yönlendiricileri esasen işlemleri, veri sorgularını ve alma işlemlerini doğru katmana yönlendirebilir.

Daha sonra bir noktada, Geçici katman (adından da anlaşılacağı gibi) kapatılacak ve tüm durumlar, tüm hesapları takip eden sıralayıcının sorumluluğunda olan Solana temel katmanına yerleştirilecektir.

Bu mekanizmaya bakmanın başka bir yolu, iki katmanımız olması ve işlemleri paralel olarak yürütmeleridir. Ana zincir aktarım hızını kullanmadan daha düşük gecikme süresiyle güncelleme yapmamıza olanak tanıyan temsilci hesaplarımız var. Ve sonra delege edilmeyen ve ana zincirde yürütülen başka hesaplarımız var.

Şimdi, çok ilginç bir şey, programların, araçların, çerçevelerin ve altyapının hepsinin ana zincirde olmasıdır. Programınızı Rollup'ta dağıtmanız gerekmez, ancak bu diğer birçok mimaride yaygındır. Her şey aynı katmandadır, her şey birleştirilebilir ve bahsettiğimiz gibi, bu özel çalışma zamanı da genişletilebilir ve gerçekten özelleştirilebilir.

Şimdi, bu, blok zinciri üzerine inşa ettiği ve düşük gecikmeli yepyeni bir oyun kategorisinin kilidini açıyor. Tıpkı geleneksel bir çok oyunculu sunucuda yaptığınız gibi, ancak yine de Katman 1 ekosisteminde bulunan her şeyle birleştirebilirsiniz.

Mevcut likiditeye erişim elde edersiniz, protokoller aracılığıyla mesaj gönderebilir, NFT'leri basabilir, hesap soyutlamalarını, oturum anahtarlarını, skor tablolarını ve birleşik bir ekosistemi kullanabilirsiniz, herkes aynı ekosistemi zenginleştiriyor.

Dinlediğiniz için çok teşekkür ederim. QR kodlarını kullanarak çerçevemize erken erişim için kaydolabilir ve depoya göz atabilirsiniz. Az önce tanıttığımız çerçeveyi ayrıntılı olarak açıklayan sağlam belgeler ve teknik incelemeler zaten bulabilirsiniz. Çok teşekkür ederim.

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
  • Repost
  • 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)