Membangun dunia virtual: Bagaimana cara menggunakan teknologi blockchain untuk menjaga waktu bagi "dewa digital"?

Alamat asli:

Diterjemahkan oleh: Justin @captainz

Sebagai pembuat dunia virtual, tujuan kami adalah menciptakan lingkungan yang menyenangkan dan sangat menarik bagi pengguna. Hal ini mengharuskan kami menemukan keseimbangan antara merancang fisika digital yang memungkinkan perilaku kompleks dan tidak terduga muncul, dan memastikan bahwa infrastruktur yang ada dapat mendukung perilaku tersebut. Untuk melakukannya, kita perlu mempertimbangkan tiga dimensi utama fisika digital: waktu, bentuk hukumnya, dan sejauh mana hukum tersebut berlaku.

waktu

Kami mengacu pada berlalunya waktu di dunia maya sebagai aplikasi iteratif dari hukum dunia itu sendiri. Setiap aplikasi diskrit adalah "instan" dalam aliran waktu di dunia ini. Salah satu cara merancang waktu di dunia adalah membuatnya bersambungan dengan waktu eksternal. Di dunia virtual berbasis blockchain, setiap blok berhubungan dengan sejumlah momen masa lalu di dunia, tidak peduli transaksi apa yang terkandung dalam blok tersebut. Ini dikenal sebagai waktu sinkron, atau fenomena "centang". Pendekatan ini dapat membuat dunia lebih menarik bagi pengguna karena mereka dapat melihat hasil tindakan mereka secara real time. Plus, itu menghasilkan waktu yang lebih lama di dunia dan dunia terus diperbarui, yang mendorong perilaku yang menarik.

Namun, pendekatan ini juga memiliki kelemahan. Kerangka waktu yang lebih besar umumnya membutuhkan lebih banyak sumber daya komputasi, yang dapat dengan cepat melebihi kemampuan rantai atau server. Mungkin juga sulit untuk mengimplementasikan sistem ini pada blockchain normal, karena semua perubahan on-chain harus dimulai oleh transaksi yang dilakukan oleh pengguna eksternal.

Kesulitan ini menjadi jelas saat Anda membayangkan sesuatu yang tampak sederhana: game on-chain dengan karakter non-pemain (NPC). Di mainnet Ethereum, Anda dapat menentukan fungsi pembaruan yang mengatur posisi setiap NPC di peta game, dan meminta akun eksternal untuk memanggilnya secara berkala untuk memperbarui posisi mereka. Tetapi ini tidak dapat diandalkan, karena Anda tidak dapat menjamin bahwa akun eksternal tidak akan kalah dalam penawaran biaya gas di blok yang seharusnya memanggil pembaruan. Oleh karena itu, struktur waktu dalam game Anda akan berubah (ambil fungsi CryptoKitties giveBirth() asli sebagai contoh; karena biaya gas on-chain meningkat, Axiom Zen sebenarnya harus meningkatkan hadiah untuk memanggil fungsi giveBirth untuk memastikan bahwa NFT baru Transaksi kelahiran disebut 256 blok setelah pengguna membiakkan Kitty). Kami menyebut metode penggunaan akun eksternal ini sebagai "detak manual".

Pembatalan khusus memberi kami lebih banyak fleksibilitas untuk menambahkan fungsionalitas "centang" on-chain, tidak perlu akun eksternal, dan kemajuan waktu yang disinkronkan dijamin oleh protokol. Kami menyebut metode ini "tanda centang otomatis". Tick otomatis dapat diimplementasikan dengan menulis "kontrak tick" yang dipanggil oleh protokol itu sendiri daripada oleh akun eksternal.

Sebagai contoh, @therealbytes mengembangkan tickchain proof-of-concept berdasarkan OP Stack yang menjalankan implementasi Game of Life Conway yang berdetak secara otomatis (Anda dapat menemukan video demo tentang ini di sini). Bytes menggunakan transaksi sistem yang dimodifikasi untuk secara otomatis menjalankan kontrak simulasi otomat seluler tik-tik. Untuk menguji sepenuhnya batas rantai itu sendiri, dia mengimplementasikan permainan dalam dua cara: satu sebagai kontrak pintar Soliditas yang berjalan di rantai, dan yang lainnya sebagai kompilasi awal dari rantai itu sendiri. Implementasi Solidity memaksimalkan CPU setelah mencapai kisi 70x70 dengan dua pembaruan per blok (1 blok/dtk, atau sekitar 10k sel/dtk), sedangkan rantai mesin kustom yang telah dikompilasi menggunakan sekitar 6% Mencapai tingkat yang sama untuk 256x256 grid dengan CPU yang lebih tinggi (sekitar 130k sel/detik).

Pada kalimat terakhir paragraf terakhir, kata kuncinya adalah “mencapai batas”. Rantai tik-tik menambah lapisan kerumitan tambahan: setiap blok tambahan membutuhkan lebih banyak status untuk disentuh oleh transaksi yang mensimulasikan permainan. Akhirnya, rollup node akan dibatasi oleh perhitungan mentah (CPU, disk IO, dll.). Satu-satunya solusi di sini adalah menggunakan node berkapasitas lebih tinggi.

Alternatif untuk "waktu sinkron" adalah "waktu asinkron". Di bawah skema ini, berlalunya waktu di dunia tidak serta merta maju seperti waktu eksternal. Sebaliknya, waktu biasanya bergerak maju ketika peristiwa tertentu (biasanya tindakan pengguna) terjadi. Permainan papan tradisional yang tidak melibatkan pengatur waktu termasuk dalam kategori serupa. Mencapai waktu asinkron pada rantai lebih mudah karena itulah model yang dirancang untuk didukung oleh blockchain. Namun, itu juga mengorbankan beberapa fitur yang mungkin membuat dunia lebih menarik (seperti memindahkan NPC secara otomatis).

WildWood, versi awal dari game proof-of-concept oleh @notdavidhuang dan cha0sg0d, mengungkap pengorbanan ini. Dalam game ini, dua pemain harus mempertahankan markas mereka dari pengepungan NPC yang agresif. Di versi game sebelumnya, pergerakan NPC hanya dipicu saat pemain bergerak sendiri - implementasi waktu asinkron yang tidak praktis. Setelah menambahkan kutu, NPC bergerak, tetapi masalah lain tetap ada. Rantai berdetak setiap detik, yang berarti jika pemain bergerak lebih dari sekali per detik, game harus menyiarkan posisi pemain di peta dengan pembaruan dari rollup optimis. Namun, rekan satu tim Anda tidak akan secara otomatis melihat klien Anda, yang berarti akan ada penundaan pembaruan posisi pemain. Untuk mengatasi masalah ini, tim menggunakan layanan relai MUD, jaringan peer-to-peer untuk menyiarkan klien lokal ke rantai penuh. Voila, transisi dari waktu asinkron ke waktu sinkron tercapai.

Hukum bentuk tertutup dan terbuka

Pembuat dunia juga harus memutuskan apakah dunia virtual mereka mengikuti representasi bentuk terbuka atau tertutup. Ekspresi bentuk tertutup memiliki jumlah operasi yang tetap. Namun, jumlah operasi yang diekspresikan dalam bentuk terbuka (atau secara rekursif) bertambah sesuai dengan variabel yang diberikan. Di bawah representasi bentuk terbuka, keadaan dunia di masa depan hanya dapat dihitung dengan menerapkan hukum dunia secara berulang-ulang ke negara-negara yang diketahui. Kompleks, lingkungan grafis, seperti Dwarf Fortress, biasanya termasuk dalam kategori ini. Representasi bentuk tertutup, di sisi lain, memungkinkan keadaan masa depan dihitung dari keadaan masa lalu dan waktu yang berlalu di antara mereka (dengan asumsi tidak ada tindakan pengguna di masa depan yang mengubah keadaan), seperti tingkat ekstraksi sumber daya di Age of Empires II.

Bentuk terbuka dapat membuat dunia virtual lebih menarik karena, seperti dunia nyata, tidak dapat diprediksi. Memprediksi keadaan dunia di masa depan membutuhkan lebih banyak waktu dan sumber daya komputasi (Game of Life Conway yang diterapkan secara on-chain adalah contoh yang baik: Anda tidak dapat menghitung keadaan masa depan yang sewenang-wenang karena Anda perlu menjalankan permainan tepat waktu). Selain itu, perilaku makroskopis yang tak terduga dapat muncul dari interaksi mikroskopis sederhana. Di dunia yang diatur oleh bentuk tertutup, perilaku yang muncul ini biasanya hanya terjadi secara eksternal, melalui tindakan pengguna (mereka sendiri seperti dalam bentuk terbuka), dan bukan di dalam dunia fisika itu sendiri.

Pertukaran antara bentuk terbuka dan tertutup melibatkan keseimbangan yang mirip dengan waktu. Bentuk tertutup mungkin membuat dunia kurang menarik, tetapi juga membuatnya lebih efisien secara komputasi. Bentuk tertutup dapat digunakan dengan waktu sinkron atau asinkron. Ketika diimplementasikan pada blockchain, mereka memiliki keunggulan signifikan dibandingkan formulir terbuka dalam hal sinkronisasi waktu. Karena biaya konstan untuk jangka waktu berapa pun, dunia dapat dirancang sehingga status on-chain hanya diperbarui saat pengguna mengirim transaksi, tetapi disetel ke status setelah waktu berlalu sejak pembaruan terakhir.

Rentang waktu dan bentuk

Pertimbangkan pendekatan standar saat ini untuk dinamika on-chain, sebuah pendekatan yang dikenal sebagai "pembaruan lambat". Dalam pembaruan lambat, pemain memulai awal dan akhir suatu tindakan, tetapi waktu di antaranya disimulasikan, bukan dihitung secara langsung. Misalnya, seorang pemain menanam pohon apel di petak pertama, lalu memanen apel di petak ke-10. Logika pembaruan malas dapat ditulis sehingga pemain dapat memanen satu apel per unit waktu, total 9 apel. Ini baik-baik saja untuk memperbarui logika dengan fungsi bentuk tertutup (seperti satu apel per blok), tetapi gagal jika logika pertanian berubah berdasarkan input di antara tindakan pemain. Jika di blok 5 hujan deras meningkatkan laju pertumbuhan apel dan di blok 7 wabah belalang hampir menghancurkan tanaman, maka di blok 10 tidak masalah berapa banyak apel yang bisa dipanen pemain Komputasi, kecuali jika Anda benar-benar menerapkan semua peristiwa yang telah terjadi (Anda tidak akan memiliki daya komputasi yang cukup untuk mengejar status baru). Tetap saja, pembaruan yang malas sangat bagus untuk perhitungan murah dari monster tertentu (seperti tanaman dengan tingkat pertumbuhan tetap), tetapi itu masih belum cukup untuk kotak peralatan lengkap untuk dunia yang dinamis.

Di dunia nyata, waktu ada di mana-mana dan berlalu sekaligus, dan alam semesta berpotensi tidak terbatas (walaupun dengan beberapa komplikasi relativitas). Namun, di dunia maya, hal ini belum tentu demikian.

Pertama, dunia virtual dapat dibatasi dengan jelas. Kemungkinan intrik umumnya meningkat dengan ukuran -- lebih banyak hal yang terjadi di dunia dengan 20 miliar galaksi daripada di dunia dengan dua atom -- tetapi begitu juga dengan biaya komputasi. Kedua hubungan ini terkait erat dengan dua trade-off yang disebutkan sebelumnya: perjalanan waktu dan bentuk fisik.

Kedua, waktu tidak harus berlalu kemana-mana di dunia maya. Dunia dapat dibagi menjadi wilayah diskrit dengan selang waktu yang berbeda untuk mengurangi beban komputasi dunia. Misalnya, aturan fisika yang lebih kompleks dan mahal dapat digunakan di area dengan aktivitas pengguna, dan aturan fisika yang lebih sederhana di tempat yang tidak ada aktivitas. Kelemahan dari pendekatan ini ada dua: dapat membuat dunia tampak tidak konsisten dan kurang lengkap, yang membatasi ruang desain untuk aturan dunia dan memberi tekanan pada pembuat dunia untuk menghindari pengguna yang membingungkan; Membatasi penyebaran kausalitas di dalam dunia, jika tindakan satu area tidak dapat memiliki konsekuensi di area yang jauh, ruang antara keduanya membeku dalam waktu. Ukuran area di mana aturan fisika berlaku merupakan pertimbangan desain penting yang akan memengaruhi sumber daya yang dibutuhkan dunia dan tingkat kesenangan yang dapat dicapainya.

Membangun dunia virtual: Bagaimana cara menggunakan teknologi blockchain untuk menjaga waktu bagi "dewa digital"?

Untuk menciptakan dunia virtual yang menarik dan menarik, perlu menyeimbangkan efisiensi dan kesenangan komputasi dengan hati-hati. Ini termasuk memutuskan jenis waktu yang akan digunakan (sinkron atau asinkron) dan menilai bentuk hukum fisika yang mengatur dunia. Ukuran area yang berlaku hukum fisika adalah keputusan penting lainnya. Dengan membuat pilihan ini dengan hati-hati, pembangun dunia tidak hanya dapat membuat beban komputasi dunia tetap menarik untuk dikelola, mereka juga dapat memberi pengembang lain basis yang sangat subur untuk inovasi.

Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
  • Hadiah
  • Komentar
  • Bagikan
Komentar
0/400
Tidak ada komentar
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)