Xây dựng thế giới ảo: Dùng công nghệ blockchain như thế nào để giữ thời gian cho các "thánh số"?

Địa chỉ gốc:

Người dịch: Justin @captainz

Với tư cách là người tạo ra thế giới ảo, mục tiêu của chúng tôi là tạo ra môi trường thú vị và hấp dẫn sâu sắc cho người dùng. Điều này đòi hỏi chúng tôi phải tìm ra sự cân bằng giữa việc thiết kế vật lý kỹ thuật số cho phép xuất hiện các hành vi phức tạp và bất ngờ, đồng thời đảm bảo rằng cơ sở hạ tầng hiện tại có thể hỗ trợ các hành vi này. Để làm được điều này, chúng ta cần xem xét ba khía cạnh chính của vật lý kỹ thuật số: thời gian, dạng các định luật của nó và mức độ áp dụng các định luật đó.

thời gian

Chúng tôi coi thời gian trôi qua trong thế giới ảo là sự áp dụng lặp đi lặp lại các quy luật của thế giới cho chính nó. Mỗi ứng dụng rời rạc là một "tức thời" trong dòng thời gian trên thế giới này. Một cách để thiết kế thời gian trong thế giới là làm cho nó liên tục với thời gian bên ngoài. Trong thế giới ảo dựa trên chuỗi khối, mỗi khối tương ứng với một số khoảnh khắc nhất định trong quá khứ trên thế giới, bất kể khối đó chứa giao dịch gì. Điều này được gọi là thời gian đồng bộ, hoặc hiện tượng "đánh dấu". Cách tiếp cận này có thể khiến thế giới trở nên thú vị hơn đối với người dùng vì họ có thể thấy kết quả hành động của mình trong thời gian thực. Thêm vào đó, nó dẫn đến thời gian ở trên thế giới lâu hơn và thế giới liên tục cập nhật, điều này khuyến khích các hành vi thú vị.

Tuy nhiên, phương pháp này cũng có nhược điểm của nó. Các khung thời gian lớn hơn thường yêu cầu nhiều tài nguyên máy tính hơn, có thể nhanh chóng vượt quá khả năng của chuỗi hoặc máy chủ. Cũng có thể khó triển khai hệ thống này trên một chuỗi khối thông thường, vì tất cả các thay đổi trên chuỗi phải được bắt đầu bởi các giao dịch do người dùng bên ngoài khởi xướng.

Khó khăn này trở nên rõ ràng khi bạn tưởng tượng một điều gì đó có vẻ đơn giản: một trò chơi trực tuyến với các nhân vật không phải người chơi (NPC). Trên mạng chính Ethereum, bạn có thể xác định chức năng cập nhật đặt vị trí của từng NPC trên bản đồ trò chơi và có một tài khoản bên ngoài định kỳ gọi nó để cập nhật vị trí của họ. Nhưng điều này có thể không đáng tin cậy, bởi vì bạn không thể đảm bảo rằng tài khoản bên ngoài sẽ không bị trả giá cao hơn về phí gas trong khối sẽ yêu cầu cập nhật. Do đó, cấu trúc thời gian trong trò chơi của bạn sẽ trôi đi (lấy hàm giveBirth() ban đầu của CryptoKitties làm ví dụ; khi phí gas trên chuỗi tăng lên, Axiom Zen thực sự phải tăng phần thưởng cho việc gọi hàm giveBirth để đảm bảo rằng NFT mới Giao dịch sinh được gọi là 256 khối sau khi người dùng nuôi Kitty). Chúng tôi gọi phương pháp sử dụng tài khoản bên ngoài này là "đánh dấu thủ công".

Các bản tổng hợp tùy chỉnh giúp chúng tôi linh hoạt hơn để thêm chức năng "đánh dấu" trên chuỗi, không cần tài khoản bên ngoài và các tiến bộ về thời gian được đồng bộ hóa được đảm bảo bởi giao thức. Chúng tôi gọi phương pháp này là "tự động đánh dấu". Đánh dấu tự động có thể được thực hiện bằng cách viết một "hợp đồng đánh dấu" được gọi bởi chính giao thức chứ không phải bởi tài khoản bên ngoài.

Ví dụ: @therealbytes đã phát triển một tickchain chứng minh khái niệm dựa trên OP Stack chạy triển khai Trò chơi cuộc sống của Conway tự động đánh dấu (bạn có thể tìm thấy bản trình diễn video về điều này tại đây). Byte sử dụng một giao dịch hệ thống đã sửa đổi để tự động gọi hợp đồng mô phỏng máy tự động di động tick-tick. Để kiểm tra đầy đủ các giới hạn của chính chuỗi, anh ấy đã triển khai trò chơi theo hai cách: một dưới dạng hợp đồng thông minh Solidity chạy trên chuỗi và cách còn lại là bản biên dịch trước của chính chuỗi đó. Việc triển khai Solidity đang sử dụng tối đa CPU sau khi đạt đến lưới 70x70 với hai bản cập nhật cho mỗi khối (1 khối/giây hoặc khoảng 10 nghìn ô/giây), trong khi chuỗi của công cụ biên dịch trước tùy chỉnh đang sử dụng khoảng 6% Đạt được tốc độ tương tự cho 256x256 lưới với CPU cao hơn (khoảng 130 nghìn ô/giây).

Trong câu cuối cùng của đoạn cuối, từ khóa là "đạt đến giới hạn". Chuỗi tick-tick bổ sung thêm một lớp phức tạp: mỗi khối bổ sung yêu cầu nhiều trạng thái hơn được chạm vào bởi các giao dịch mô phỏng trò chơi. Cuối cùng, các nút tổng số sẽ bị giới hạn bởi tính toán thô (CPU, đĩa IO, v.v.). Giải pháp duy nhất ở đây là sử dụng các nút có dung lượng cao hơn.

Một thay thế cho "thời gian đồng bộ" là "thời gian không đồng bộ". Theo sơ đồ này, thời gian trôi qua trên thế giới không nhất thiết phải tiến lên như thời gian bên ngoài tiến lên. Thay vào đó, thời gian thường di chuyển về phía trước khi một số sự kiện (thường là hành động của người dùng) xảy ra. Các trò chơi cờ truyền thống không liên quan đến đồng hồ bấm giờ cũng thuộc danh mục tương tự. Đạt được thời gian không đồng bộ trên chuỗi dễ dàng hơn vì đó là mô hình mà các chuỗi khối được thiết kế để hỗ trợ. Tuy nhiên, nó cũng hy sinh một số tính năng có thể khiến thế giới trở nên thú vị hơn (chẳng hạn như các NPC tự động di chuyển).

WildWood, phiên bản đầu tiên của trò chơi chứng minh khái niệm của @notdavidhuang và cha0sg0d, tiết lộ sự hy sinh này. Trong trò chơi này, hai người chơi phải bảo vệ căn cứ của mình khỏi sự bao vây của các NPC hung hãn. Trong các phiên bản trước của trò chơi, chuyển động của NPC chỉ được kích hoạt khi người chơi tự di chuyển - một triển khai không thực tế về thời gian không đồng bộ. Sau khi thêm dấu tích, các NPC đã di chuyển, nhưng một vấn đề khác vẫn tiếp diễn. Chuỗi tích tắc mỗi giây, có nghĩa là nếu người chơi di chuyển nhiều hơn một lần mỗi giây, trò chơi phải phát vị trí của người chơi trên bản đồ với các bản cập nhật từ tổng số lạc quan. Tuy nhiên, đồng đội của bạn sẽ không tự động nhìn thấy khách hàng của bạn, điều đó có nghĩa là sẽ có sự chậm trễ trong việc cập nhật vị trí của người chơi. Để khắc phục vấn đề này, nhóm đã sử dụng dịch vụ chuyển tiếp của MUD, một mạng ngang hàng để phát sóng các máy khách cục bộ đến toàn bộ chuỗi. Thì đấy, quá trình chuyển đổi từ thời gian không đồng bộ sang thời gian đồng bộ đã hoàn tất.

Luật dạng đóng và dạng mở

Những người xây dựng thế giới cũng phải quyết định xem thế giới ảo của họ tuân theo biểu diễn dạng mở hay dạng đóng. Biểu thức dạng đóng có một số lượng hoạt động cố định. Tuy nhiên, số lượng phép toán được biểu diễn dưới dạng mở (hoặc đệ quy) tăng lên theo các biến đã cho. Dưới các biểu diễn dạng mở, trạng thái tương lai của thế giới chỉ có thể được tính toán bằng cách áp dụng lặp đi lặp lại các định luật của thế giới cho các trạng thái đã biết. Các môi trường đồ họa phức tạp, như Pháo đài Lùn, thường thuộc loại này. Mặt khác, các biểu diễn dạng đóng cho phép bất kỳ trạng thái tương lai nào được tính toán từ các trạng thái trong quá khứ và thời gian trôi qua giữa chúng (giả sử không có hành động nào của người dùng trong tương lai thay đổi trạng thái), chẳng hạn như tỷ lệ khai thác tài nguyên trong Age of Empires II.

Các hình thức mở có thể làm cho thế giới ảo trở nên thú vị hơn bởi vì, giống như thế giới thực, chúng không thể đoán trước được. Dự đoán trạng thái tương lai của thế giới đòi hỏi ngày càng nhiều thời gian và tài nguyên máy tính (Trò chơi cuộc sống của Conway được triển khai trên chuỗi là một ví dụ điển hình: bạn không thể tính toán các trạng thái tương lai tùy ý vì bạn cần chạy trò chơi kịp thời). Hơn nữa, các hành vi vĩ mô bất ngờ có thể xuất hiện từ các tương tác vi mô đơn giản. Trong một thế giới bị chi phối bởi một dạng đóng, những hành vi mới nổi này thường chỉ xảy ra bên ngoài, thông qua hành động của người dùng (chính họ ở dạng mở) chứ không phải trong chính thế giới vật lý.

Sự đánh đổi giữa hình thức mở và đóng liên quan đến sự cân bằng tương tự như sự cân bằng về thời gian. Các dạng đóng có thể làm cho thế giới ít thú vị hơn, nhưng chúng cũng làm cho nó hiệu quả hơn về mặt tính toán. Dạng đóng có thể được sử dụng với thời gian đồng bộ hoặc không đồng bộ. Khi được triển khai trên một chuỗi khối, chúng có những lợi thế đáng kể so với các biểu mẫu mở khi đồng bộ hóa thời gian. Do chi phí không đổi trong bất kỳ khoảng thời gian nào, nên thế giới có thể được thiết kế sao cho trạng thái trên chuỗi chỉ được cập nhật khi người dùng gửi giao dịch, nhưng nó được đặt ở trạng thái sau thời gian đã trôi qua kể từ lần cập nhật cuối cùng.

Phạm vi thời gian và hình dạng

Hãy xem xét cách tiếp cận tiêu chuẩn hiện tại đối với động lực học trên chuỗi, một cách tiếp cận được gọi là "cập nhật lười biếng". Trong một bản cập nhật lười biếng, người chơi bắt đầu bắt đầu và kết thúc một hành động, nhưng thời gian ở giữa được mô phỏng thay vì được tính toán trực tiếp. Ví dụ: người chơi trồng một cây táo ở ô đầu tiên, sau đó thu hoạch táo ở ô thứ 10. Logic cập nhật lười biếng có thể được viết để người chơi có thể thu hoạch một quả táo mỗi đơn vị thời gian, tổng cộng là 9 quả táo. Điều này hoàn toàn tốt đối với logic cập nhật với các chức năng dạng đóng (như một quả táo trên mỗi khối), nhưng không thành công nếu logic canh tác thay đổi dựa trên đầu vào giữa các hành động của người chơi. Nếu ở khối 5, một cơn mưa lớn làm tăng tốc độ phát triển của táo và ở khối 7, một đàn châu chấu gần như phá hủy mùa màng, thì ở khối 10, người chơi có thể thu hoạch bao nhiêu táo không quan trọng, trừ khi bạn thực sự áp dụng tất cả sự kiện đã xảy ra (bạn sẽ không có đủ sức mạnh tính toán để bắt kịp trạng thái mới). Tuy nhiên, các bản cập nhật lười biếng rất tốt cho các tính toán rẻ tiền của một số mob nhất định (như thực vật có tốc độ tăng trưởng cố định), nhưng nó vẫn chưa đủ cho một hộp công cụ đầy đủ cho một thế giới năng động.

Trong thế giới thực, thời gian ở khắp mọi nơi và trôi qua cùng một lúc, và vũ trụ có khả năng là vô hạn (mặc dù có một số phức tạp của thuyết tương đối). Tuy nhiên, trong một thế giới ảo, điều này không nhất thiết phải như vậy.

Đầu tiên, thế giới ảo có thể bị giới hạn rõ ràng. Khả năng của âm mưu thường tăng theo quy mô -- nhiều thứ đang diễn ra trong thế giới có 20 tỷ thiên hà hơn là trong thế giới của hai nguyên tử -- nhưng chi phí tính toán cũng vậy. Cả hai mối quan hệ này đều liên quan chặt chẽ với hai sự đánh đổi đã đề cập trước đó: thời gian trôi qua và hình thái vật chất.

Thứ hai, thời gian không nhất thiết phải trôi qua mọi nơi trong thế giới ảo. Thế giới có thể được chia thành các khu vực riêng biệt với các khoảng thời gian khác nhau để giảm bớt gánh nặng tính toán của thế giới. Ví dụ: các quy tắc vật lý phức tạp và đắt tiền hơn có thể được sử dụng ở những khu vực có hoạt động của người dùng và các quy tắc vật lý đơn giản hơn ở những nơi không có hoạt động. Nhược điểm của cách tiếp cận này là gấp đôi: nó có thể làm cho thế giới có vẻ không nhất quán và thiếu tính hoàn chỉnh, điều này hạn chế không gian thiết kế cho các quy tắc thế giới và gây áp lực lên những người xây dựng thế giới để tránh gây nhầm lẫn cho người dùng; Hạn chế sự lan truyền quan hệ nhân quả trong thế giới, nếu các hành động của một khu vực không thể gây hậu quả ở những khu vực xa xôi, không gian giữa hai khu vực bị đóng băng trong thời gian. Kích thước của khu vực áp dụng các quy tắc vật lý là một cân nhắc thiết kế quan trọng sẽ ảnh hưởng đến các nguồn tài nguyên mà thế giới cần và mức độ thú vị mà nó có thể đạt được.

Xây dựng thế giới ảo: Cách dùng công nghệ blockchain để giữ thời gian cho các “thánh số”?

Để tạo ra một thế giới ảo thú vị và hấp dẫn, cần phải cân bằng cẩn thận giữa hiệu quả tính toán và sự thú vị. Điều này bao gồm việc quyết định sử dụng loại thời gian nào (đồng bộ hoặc không đồng bộ) và đánh giá hình dạng của các định luật vật lý chi phối thế giới. Kích thước của khu vực áp dụng các định luật vật lý là một quyết định quan trọng khác. Bằng cách đưa ra những lựa chọn này một cách cẩn thận, các nhà xây dựng thế giới không chỉ có thể quản lý gánh nặng tính toán của thế giới một cách thú vị mà còn có thể cung cấp cho các nhà phát triển khác một cơ sở màu mỡ cao để đổi mới.

Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • Bình luận
  • Chia sẻ
Bình luận
0/400
Không có bình luận
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)