3 điểm bởi GN⁺ 2025-01-01 | 1 bình luận | Chia sẻ qua WhatsApp
  • Arnis là một dự án mã nguồn mở miễn phí tạo thế giới Minecraft Java Edition 1.17+ và Bedrock Edition phản ánh địa lý, địa hình và kiến trúc thực tế
  • Thuật toán tạo xử lý dữ liệu không gian địa lý OpenStreetMap cùng dữ liệu độ cao để tái hiện địa hình và công trình kiến trúc trong Minecraft chính xác hơn
  • Người dùng có thể chọn khu vực bằng công cụ hình chữ nhật trên bản đồ, chọn thế giới Minecraft rồi nhấn Start Generation để tạo; cũng có thể điều chỉnh các thiết lập như tỉ lệ thế giới, điểm spawn và tạo nội thất tòa nhà
  • Nếu muốn tạo thế giới trên trình duyệt mà không cần cài đặt, hoặc cần kích thước bản đồ lớn hơn và tạo trên di động, có thể dùng MapSmith
  • Kênh tải xuống chính thức chỉ gồm arnismc.com và kho GitHub; các bản tải Arnis từ website khác là không chính thức và có thể chứa mã độc

Thế giới Minecraft do Arnis tạo ra

  • Arnis tạo các thế giới Minecraft phản ánh địa lý, địa hình và kiến trúc của thế giới thực
    • Hỗ trợ Minecraft Java Edition 1.17+Bedrock Edition
    • Có thể biến các khu vực thực như quê nhà, đô thị lớn hay cảnh quan thiên nhiên thành thế giới Minecraft
  • Dự án là công cụ mã nguồn mở miễn phí được thiết kế để xử lý dữ liệu địa lý thực tế ở quy mô lớn
  • Quá trình tạo sử dụng kết hợp dữ liệu không gian địa lý và dữ liệu độ cao của OpenStreetMap
    • Mục tiêu là tạo biểu diễn địa hình và công trình kiến trúc trong Minecraft chính xác hơn

Cách sử dụng

  • Người dùng có thể tải bản phát hành mới nhất hoặc tự build
  • Trong GUI, chọn khu vực mong muốn trên bản đồ bằng công cụ hình chữ nhật, chỉ định thế giới Minecraft rồi bấm Start Generation
  • Có thể điều chỉnh nhiều mục trong cấu hình tạo
    • Tỉ lệ thế giới
    • Điểm spawn
    • Tạo nội thất tòa nhà
  • Nếu cần tạo trên di động hoặc kích thước bản đồ lớn hơn, MapSmith có thể tạo thế giới ngay trên trình duyệt mà không cần cài đặt

Tài liệu và mục tiêu phát triển

  • Tài liệu đầy đủ được cung cấp trên GitHub Wiki
    • Giải thích kỹ thuật
    • FAQ
    • Hướng dẫn đóng góp
    • Lộ trình
  • Các mục tiêu cốt lõi của dự án là tính mô-đun, hiệu năng, tài liệu hóa, khả năng sử dụng và hỗ trợ đa nền tảng
    • Muốn tách bạch rõ ràng việc nhập dữ liệu, xử lý và tạo thế giới để tăng khả năng bảo trì và mở rộng
    • Chú trọng tối ưu hiệu năng để tạo thế giới nhanh
    • Muốn làm rõ cấu trúc và logic thông qua tài liệu hóa bên trong mã nguồn
    • Hướng tới trải nghiệm dễ dùng cho người dùng cuối
    • Nhắm tới việc hoạt động mượt mà trên Windows, macOS và Linux

Build và đóng góp

  • Dự án nhận đóng góp ở mọi cấp độ, bao gồm sửa lỗi, cải thiện hiệu năng, thêm tính năng mới và cải thiện tài liệu
  • Quy trình đóng góp là fork kho, thực hiện thay đổi rồi gửi pull request
  • Ví dụ build bằng dòng lệnh như sau
    • cargo run --no-default-features -- --terrain --path="C:/YOUR_PATH/.minecraft/saves/worldname" --bbox="min_lat,min_lng,max_lat,max_lng"
  • Build GUI được chạy bằng lệnh sau
    • cargo run
  • Người dùng Nix có thể chạy trực tiếp như sau
    • nix run github:louis-e/arnis -- --terrain --path=YOUR_PATH/.minecraft/saves/worldname --bbox="min_lat,min_lng,max_lat,max_lng"
  • Khi pull request được merge, các thay đổi sẽ được đưa vào các bản phát hành cập nhật định kỳ

Mức độ nhận biết, giấy phép và nguồn chính thức

1 bình luận

 
GN⁺ 2025-01-01
Ý kiến Hacker News
  • Điều thực sự tuyệt vời là hệ sinh thái OpenStreetMap cung cấp những công cụ đủ trưởng thành để bất kỳ ai cũng có thể sử dụng dữ liệu địa không gian
    Hơn 10 năm trước, tôi đã tạo maps4cim, một dự án mã nguồn mở là trình tạo thành phố cho Cities in Motion 2, trong đó đường sá và tòa nhà dùng dữ liệu OSM, còn độ cao dùng dữ liệu NASA SRTM
    Phía OSM phức tạp hơn nhiều và dữ liệu cũng thay đổi hằng ngày, nhưng nếu gửi cùng một truy vấn tới Overpass API thì vẫn có thể nhận được dữ liệu mới nhất theo đúng định dạng mong đợi
    Trong khi đó, vào một thời điểm nào đó NASA đã đóng quyền truy cập công khai vào dữ liệu SRTM vốn thuộc phạm vi công cộng, rồi giấu nó sau một dịch vụ web không phải REST chỉ cho người dùng đã đăng ký truy cập
    Nếu dữ liệu không miễn phí và dễ truy cập thì ngay từ đầu tôi đã không bắt đầu những dự án mã nguồn mở như thế này, và khi xuất hiện rào cản gia nhập thì chúng ta sẽ mất đi tất cả những công cụ tốt lẽ ra có thể được xây dựng trên vai người khổng lồ
    Tôi hy vọng sẽ có thêm nhiều dự án thực hành tinh thần dữ liệu mở như OSM nhận được sức mạnh lớn hơn
    1: https://github.com/Klamann/maps4cim
    • Việc đóng góp cũng dễ đến kinh ngạc
      Nhờ các nhiệm vụ được game hóa của StreetComplete và trình chỉnh sửa chạy trong trình duyệt của osm.org, bất kỳ ai có Internet cũng có thể chỉnh sửa các địa điểm xung quanh mình chỉ trong vài phút
      Tuy vậy, việc đi đến đâu cũng vẫn còn thứ để sửa cũng đồng nghĩa là chưa có đủ người đóng góp
      Vấn đề lớn là chưa có ứng dụng chủ lực mà mọi người dùng thường xuyên rồi phát hiện lỗi, nhưng điều này dường như đang dần thay đổi với Organic Maps, và tôi cũng nghe nói có những người mới bắt đầu lập bản đồ vì tính năng tự đỗ xe của Tesla
    • Có vẻ như có thể tải xuống toàn bộ bộ dữ liệu SRTM, không rõ như vậy có dùng được không
      https://www.reddit.com/r/gis/comments/qg4b6j/is_it_possible_...
      Geonames cũng cung cấp dịch vụ tra cứu độ cao dựa trên SRTM và các dữ liệu khác: http://www.geonames.org/export/web-services.html
      Nhưng nếu cần lấy mẫu chi tiết trên một khu vực rộng thì có thể đụng giới hạn API hoặc làm quá tải dịch vụ
      Dù vậy, điều đó vẫn cho thấy bên thứ ba hoàn toàn có thể nắm giữ bộ dữ liệu và cung cấp API dựa trên nó
  • Tôi có thể tạo khu phố của mình trong Minecraft, cho đứa con 8 tuổi xem và giả vờ như mình tự làm ra
    Theo như tôi biết thì GPL không có điều khoản nào cấm tạo anh hùng giả
    • GPL không giới hạn cách bản thân chương trình được sử dụng, tức là quyền tự do số 0
      Tuy nhiên vẫn có ngoại lệ, chẳng hạn như với trình tạo lexer/parser nơi đầu ra có thể chứa một phần mã nguồn của chính chương trình, và giấy phép GNU Bison có thêm ngoại lệ minh thị cho phép điều đó
      Minecraft có Redstone và Command Blocks, và mọi người thậm chí còn làm ra cả 8086 hay Tetris
      Tôi tự hỏi liệu có trường hợp biên nào mà một thế giới được tạo ra từ công cụ kiểu này lại bị GPL lây nhiễm hay không
      Cá nhân tôi thích giấy phép BSD/MIT hơn vì lý do này. Tôi không muốn một câu hỏi đơn giản như “liệu mình có thực sự được dùng chương trình này không?” lại khiến ai đó phải tốn tiền thuê luật sư
  • Sẽ rất tuyệt nếu nó còn tạo cả biển báo đường bộ ở các giao lộ
    Tôi muốn dùng nó để giúp bọn trẻ quen hơn với khu phố của mình
    Tôi đã mệt vì cứ phải liên tục trả lời tên đường là gì hay phải rẽ ở đâu, và đôi khi tôi còn đưa cả chỉ dẫn rẽ từng chặng hoàn chỉnh
    Cho tới giờ thì chúng chỉ bị lạc có vài lần
  • IGN, cơ quan công của Pháp, cũng cung cấp một dịch vụ tạo bản đồ Minecraft từ địa điểm ngoài đời thực
    Tuy nhiên có lẽ nó không chi tiết bằng dự án này
    [0]: https://minecraft.ign.fr/
  • Có vẻ dự án này khá nhấn mạnh việc nó được viết bằng Rust bất cứ khi nào có cơ hội
    • Có đoạn giải thích: “Tôi quyết định chuyển dự án sang Rust để học thêm ngôn ngữ và đẩy hiệu năng thuật toán xa hơn. Trong Python, tôi đã gần chạm giới hạn tối ưu hóa, còn năng lực của Rust cho phép hiệu năng và hiệu quả tốt hơn”
      Vì đã có sẵn một bản triển khai bằng Python từ trước, nên việc nói rõ ở phần đầu phiên bản này khác gì là điều hợp lý
    • Làm sao biết ai đó là lập trình viên Rust? Họ sẽ tự nói cho bạn biết
    • So với thời mà tên thư viện hay ứng dụng viết bằng Java đều bắt đầu bằng chữ J thì chuyện này vẫn còn thua xa
      Thậm chí đó còn chẳng phải từ thực sự bắt đầu bằng J, mà chỉ là kiểu gắn J vào trước mọi cái tên
    • Giờ chắc cũng đủ tầm để được đưa vào style guide của Rust rồi
    • Thực ra trong README từ “Rust” xuất hiện 6 lần, mà một nửa trong số đó nằm trong đoạn FAQ giải thích vì sao chuyển từ Python sang Rust
      Số lần nhắc tới Python cũng gần như tương đương
  • Sẽ hay nếu có một phiên bản tạo đường đua dựa trên các khu vực ngoài đời thực, giống như các game Flight Simulator mới nhất của Microsoft
    • Hoặc cả GTA: Auburn, AL nữa
  • Tham khảo các liên kết về thời tiết thời gian thực, chuyến bay, giao thông, buồng lái dựa trên React, dữ liệu Google Earth GlTF mã nguồn mở và các ứng dụng giả lập bay như MSFS·X-Plane: https://news.ycombinator.com/item?id=38437821
    Có lẽ cách dễ hơn là phân biệt xem tham chiếu vị trí dưới dạng lời nói hoặc (lat,long,game) là vị trí trong game hay là một địa điểm hư cấu trong game trùng tên với ngoài đời

Tài liệu liên quan đến Google Maps GlTF 3D Tiles https://developers.google.com/maps/documentation/tile/3d-til... cho biết để render các tile chân thực của Google thì phải dùng trình render 3D Tiles hỗ trợ hiển thị bản quyền, và có thể dùng CesiumJS hoặc Cesium for Unreal
Trong số các game mã nguồn mở kiểu Minecraft có Python API thì có sensorcraft, dựa trên pyglet cho OpenGL 3D, và xử lý self.add_block(), trọng lực, AI, mạch điện, v.v.
Tôi cũng tò mò liệu WebGL có tính di động tốt hơn OpenGL hay không, và liệu có thể biên dịch pyglet sang WASM không
Tôi biết panda3d và godot có thể được biên dịch sang WASM khá dễ dàng
Một physics engine mã nguồn mở bằng Python có thể hữu ích cho các bản clone Minecraft là Genesis-Embodied-AI/Genesis: “Genesis: A Generative and Universal Physics Engine for Robotics and Beyond” https://news.ycombinator.com/item?id=42457213#42457224
“Approximating mathematical constants using Minecraft” https://news.ycombinator.com/item?id=42319313 cũng nhắc đến luanti, minetest, mcpi, MCPI-Revival/minecraft-pi-reborn

  • FlightGear từ lâu trước đây đã làm việc tương tự, nhưng chỉ áp dụng cho bản đồ
  • Kỳ lạ là khu chung cư của tôi lại không được render, trong khi các tòa nhà xung quanh và bể bơi thì có
    Tôi cũng đã kiểm tra dữ liệu OSM nên lại càng thấy lạ hơn
    Trong khi đó, trường học của con tôi ở không xa và được render khá chi tiết
    Đào sâu hơn thì có vẻ tòa nhà đó được render dưới dạng multipolygon với hai layer khác nhau trong OSM, còn các tòa nhà khác thì được render dựa trên tập hợp node
  • Rất tuyệt. Việc tạo tuyến Chicago L hẳn là một thử thách khá lớn về mặt thuật toán
  • Sẽ rất hay nếu có thể đối chiếu bản đồ điểm do Nhật Bản công bố với OpenStreetMap để tạo ra các tòa nhà chi tiết hơn
    • Tôi muốn biết liên kết của bản đồ điểm đó