3 คะแนน โดย GN⁺ 2025-01-01 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Arnis เป็นโปรเจกต์โอเพนซอร์สฟรีสำหรับสร้างโลกของ Minecraft Java Edition 1.17+ และ Bedrock Edition ที่สะท้อนภูมิศาสตร์ ภูมิประเทศ และสิ่งปลูกสร้างจริง
  • อัลกอริทึมการสร้างจะประมวลผล ข้อมูลภูมิสารสนเทศจาก OpenStreetMap และข้อมูลระดับความสูง เพื่อจำลองภูมิประเทศและสิ่งปลูกสร้างใน Minecraft ได้แม่นยำยิ่งขึ้น
  • ผู้ใช้สามารถเลือกพื้นที่บนแผนที่ด้วย เครื่องมือสี่เหลี่ยม เลือกโลก Minecraft แล้วกด Start Generation เพื่อสร้างได้ และยังปรับตั้งค่าต่าง ๆ เช่น สเกลของโลก จุดเกิด และการสร้างภายในอาคารได้ด้วย
  • หากต้องการสร้างโลกในเบราว์เซอร์โดยไม่ต้องติดตั้ง หรือต้องการขนาดแผนที่ที่ใหญ่ขึ้นและการสร้างบนมือถือ สามารถใช้ MapSmith ได้
  • ช่องทางดาวน์โหลดอย่างเป็นทางการมีเพียง arnismc.com และ GitHub repository เท่านั้น การดาวน์โหลด Arnis จากเว็บไซต์อื่นไม่เป็นทางการและอาจเป็นอันตรายได้

โลก Minecraft ที่ Arnis สร้างขึ้น

  • Arnis สร้างโลก Minecraft ที่สะท้อนภูมิศาสตร์ ภูมิประเทศ และสิ่งปลูกสร้างของโลกจริง
    • รองรับ Minecraft Java Edition 1.17+ และ Bedrock Edition
    • สามารถสร้างพื้นที่จริง เช่น บ้านเกิด เมืองใหญ่ หรือทิวทัศน์ธรรมชาติ ให้เป็นโลก Minecraft ได้
  • โปรเจกต์นี้เป็นเครื่องมือ โอเพนซอร์สฟรี ที่ออกแบบมาเพื่อจัดการข้อมูลภูมิศาสตร์จริงขนาดใหญ่
  • กระบวนการสร้างใช้ทั้งข้อมูลภูมิสารสนเทศและข้อมูลระดับความสูงจาก OpenStreetMap
    • มีเป้าหมายเพื่อทำให้การแสดงภูมิประเทศและสิ่งปลูกสร้างในรูปแบบ Minecraft แม่นยำยิ่งขึ้น

วิธีใช้งาน

  • ผู้ใช้สามารถดาวน์โหลด รีลีสล่าสุด หรือบิลด์เองได้
  • ใน GUI ให้เลือกพื้นที่ที่ต้องการบนแผนที่ด้วย เครื่องมือสี่เหลี่ยม ระบุโลก Minecraft แล้วคลิก Start Generation
  • การตั้งค่าการสร้างสามารถปรับได้หลายรายการ
    • สเกลของโลก
    • จุดเกิด
    • การสร้างภายในอาคาร
  • หากต้องการสร้างบนมือถือหรือใช้ขนาดแผนที่ที่ใหญ่ขึ้น MapSmith สามารถสร้างโลกผ่านเบราว์เซอร์ได้โดยไม่ต้องติดตั้ง

เอกสารและเป้าหมายการพัฒนา

  • เอกสารทั้งหมดมีให้ที่ GitHub Wiki
    • คำอธิบายทางเทคนิค
    • FAQ
    • แนวทางการมีส่วนร่วม
    • โรดแมป
  • เป้าหมายหลักของโปรเจกต์คือ ความเป็นโมดูล, ประสิทธิภาพ, การจัดทำเอกสาร, ความง่ายในการใช้งาน และการรองรับข้ามแพลตฟอร์ม
    • พยายามแยกการนำเข้าข้อมูล การประมวลผล และการสร้างโลกออกจากกันอย่างชัดเจน เพื่อเพิ่มความสามารถในการบำรุงรักษาและขยายต่อ
    • ให้ความสำคัญกับการปรับประสิทธิภาพเพื่อให้สร้างโลกได้รวดเร็ว
    • พยายามทำให้โครงสร้างและลอจิกชัดเจนผ่านเอกสารภายในโค้ด
    • มุ่งให้ผู้ใช้ปลายทางใช้งานได้ง่าย
    • มุ่งให้ทำงานได้ราบรื่นบน Windows, macOS และ Linux

การบิลด์และการมีส่วนร่วม

  • โปรเจกต์เปิดรับการมีส่วนร่วมทุกระดับ ทั้งการแก้บั๊ก ปรับปรุงประสิทธิภาพ เพิ่มฟีเจอร์ใหม่ และปรับปรุงเอกสาร
  • วิธีมีส่วนร่วมคือ fork repository ทำการเปลี่ยนแปลง แล้วส่ง pull request
  • ตัวอย่างการบิลด์ผ่านบรรทัดคำสั่งมีดังนี้
    • cargo run --no-default-features -- --terrain --path="C:/YOUR_PATH/.minecraft/saves/worldname" --bbox="min_lat,min_lng,max_lat,max_lng"
  • การบิลด์ GUI รันด้วยคำสั่งต่อไปนี้
    • cargo run
  • ผู้ใช้ Nix สามารถรันโดยตรงได้ดังนี้
    • nix run github:louis-e/arnis -- --terrain --path=YOUR_PATH/.minecraft/saves/worldname --bbox="min_lat,min_lng,max_lat,max_lng"
  • เมื่อ pull request ถูก merge แล้ว การเปลี่ยนแปลงจะถูกรวมอยู่ในรีลีสอัปเดตตามรอบ

การเป็นที่รู้จัก ไลเซนส์ และแหล่งที่มาอย่างเป็นทางการ

1 ความคิดเห็น

 
GN⁺ 2025-01-01
ความคิดเห็นจาก Hacker News
  • สิ่งที่ดีมากเกี่ยวกับ ระบบนิเวศของ OpenStreetMap คือการมีเครื่องมือที่成熟แล้วซึ่งทำให้ทุกคนใช้ข้อมูลภูมิสารสนเทศได้
    กว่า 10 ปีก่อนเคยสร้างโปรเจกต์โอเพนซอร์สชื่อ maps4cim ซึ่งเป็นตัวสร้างเมืองสำหรับ Cities in Motion 2 โดยใช้ข้อมูล OSM สำหรับถนนและอาคาร และใช้ข้อมูล NASA SRTM สำหรับความสูง
    ฝั่ง OSM ซับซ้อนกว่ามากและข้อมูลก็เปลี่ยนทุกวัน แต่ถ้าส่งคิวรีเดิมไปที่ Overpass API ก็ยังคาดหวังได้ว่าจะได้ข้อมูลล่าสุดในรูปแบบที่ต้องการ
    ตรงกันข้าม NASA เคยปิดการเข้าถึงสาธารณะของ ข้อมูล SRTM ที่เป็น public domain ในช่วงหนึ่ง แล้วเอาไปซ่อนไว้หลังเว็บเซอร์วิสที่ไม่ใช่ REST และเข้าถึงได้เฉพาะผู้ใช้ที่ลงทะเบียนเท่านั้น
    ถ้าข้อมูลไม่ได้ฟรีและเข้าถึงได้ง่าย ก็คงไม่เริ่มทำโปรเจกต์โอเพนซอร์สแบบนี้ตั้งแต่แรก และเมื่อมีอุปสรรคในการเริ่มต้น เราก็จะสูญเสียเครื่องมือดี ๆ ทั้งหมดที่อาจถูกสร้างขึ้นบนไหล่ของยักษ์
    อยากให้โปรเจกต์ที่ปฏิบัติตามจิตวิญญาณของ open data อย่าง OSM มีพลังมากขึ้น
    1: https://github.com/Klamann/maps4cim
    • การมีส่วนร่วมก็ง่ายอย่างน่าทึ่ง
      ด้วยเควสต์แบบเกมของ StreetComplete หรือเอดิเตอร์บนเบราว์เซอร์ของ osm.org แค่มีอินเทอร์เน็ต ใคร ๆ ก็แก้ไขสถานที่รอบตัวได้ในไม่กี่นาที
      แต่การที่ไปที่ไหนก็ยังมีสิ่งให้แก้ไขอยู่เสมอ ก็แปลว่ายังมีผู้ร่วมแก้ไขไม่พอ
      ปัญหาใหญ่คือไม่มี แอปเรือธง ที่ผู้คนใช้อยู่ตลอดแล้วเจอข้อผิดพลาด แต่ Organic Maps กำลังเปลี่ยนเรื่องนี้ทีละน้อย และได้ยินว่ามีคนเริ่มทำแผนที่ใหม่เพราะระบบจอดรถอัตโนมัติของ Tesla ด้วย
    • ดูเหมือนว่าสามารถดาวน์โหลด ชุดข้อมูล SRTM ทั้งหมด ได้ เลยสงสัยว่าใช้วิธีนั้นไม่ได้หรือ
      https://www.reddit.com/r/gis/comments/qg4b6j/is_it_possible_...
      Geonames ก็ให้บริการค้นหาความสูงโดยอิงจาก SRTM และข้อมูลอื่น ๆ: http://www.geonames.org/export/web-services.html
      แต่ถ้าต้องสุ่มตัวอย่างพื้นที่กว้างแบบละเอียด อาจติดข้อจำกัด API หรือทำให้บริการโอเวอร์โหลดได้
      อย่างไรก็ดี นี่แสดงให้เห็นว่าบุคคลที่สามสามารถจัดหาชุดข้อมูลแล้วให้บริการ API บนข้อมูลนั้นได้
  • น่าจะสร้างย่านบ้านตัวเองใน Minecraft แล้วเอาไปให้ลูก 8 ขวบดู พร้อมแกล้งทำเป็นว่าผมเป็นคนทำเองได้
    เท่าที่รู้ GPL ไม่มีข้อห้ามเรื่อง การสร้างฮีโร่ปลอม
    • GPL ไม่จำกัดวิธีใช้โปรแกรมเอง ซึ่งก็คือเสรีภาพข้อ 0
      อย่างไรก็ตาม มีข้อยกเว้นในกรณีที่ผลลัพธ์มีส่วนหนึ่งของซอร์สโปรแกรมเองรวมอยู่ด้วย เช่นตัวสร้าง lexer/parser และไลเซนส์ GNU Bison ก็มีข้อยกเว้นที่ระบุชัดว่าอนุญาตเรื่องนี้
      ใน Minecraft มี Redstone และ Command Blocks และผู้คนก็สร้างสิ่งอย่าง 8086 หรือ Tetris กันมาแล้ว
      เลยสงสัยว่าจะมีกรณีก้ำกึ่งไหมที่โลกซึ่งสร้างจากเครื่องมือสร้างโลกแบบนี้จะถูก “ปนเปื้อน” GPL
      ส่วนตัวชอบไลเซนส์ BSD/MIT มากกว่าด้วยเหตุผลแบบนี้ ไม่อยากต้องเสียค่าทนายกับคำถามง่าย ๆ อย่าง “ใช้โปรแกรมนี้จริง ๆ ได้ไหม?”
  • ถ้าสร้าง ป้ายจราจร ที่ทางแยกให้ด้วยคงดีมาก
    อยากใช้ช่วยให้เด็ก ๆ คุ้นเคยกับย่านของเรามากขึ้น
    ผมเหนื่อยกับการต้องถามชื่อถนนหรือว่าต้องเลี้ยวไปทางไหนตลอด และบางครั้งก็ให้คำแนะนำแบบ turn-by-turn เต็มรูปแบบด้วย
    จนถึงตอนนี้หลงทางไปแค่ไม่กี่ครั้งเอง
  • IGN หน่วยงานรัฐของฝรั่งเศสก็มีบริการสร้างแผนที่ Minecraft จากสถานที่จริง
    แต่อาจไม่ได้ละเอียดเท่าโปรเจกต์นี้
    [0]: https://minecraft.ign.fr/
  • โปรเจกต์นี้ดูจะเน้นค่อนข้างมากว่า สร้างด้วย Rust ทุกครั้งที่มีโอกาส
    • มีคำอธิบายว่า “เราตัดสินใจพอร์ตโปรเจกต์ไปเป็น Rust เพื่อเรียนรู้ภาษาเพิ่มเติมและผลักประสิทธิภาพของอัลกอริทึมให้ไกลขึ้น ใน Python เราเข้าใกล้ขีดจำกัดของการปรับแต่งแล้ว และความสามารถของ Rust ทำให้ได้ประสิทธิภาพและความคุ้มค่ามากขึ้น”
      ในเมื่อเคยมี implementation เดิมด้วย Python มาก่อน การบอกไว้ช่วงต้นว่าเวอร์ชันนี้ต่างอย่างไรก็ดูสมเหตุสมผล
    • รู้ได้อย่างไรว่าใครเป็นโปรแกรมเมอร์ Rust? เขาจะบอกคุณเอง
    • ยังห่างไกลจากยุคที่ไลบรารีหรือแอปพลิเคชันที่เขียนด้วย Java ทุกอย่างขึ้นต้นด้วย J อยู่มาก
      ไม่ใช่ว่าเป็นคำจริงที่ขึ้นต้นด้วย J ด้วยซ้ำ แค่เอา J ไปแปะไว้หน้าชื่ออะไรก็ได้
    • ตอนนี้ถึงขั้นควรใส่ไว้ใน Rust style guide แล้ว
    • จริง ๆ แล้วใน README มีคำว่า “Rust” 6 ครั้ง และครึ่งหนึ่งอยู่ในย่อหน้า FAQ ที่อธิบายว่าทำไมถึงพอร์ตจาก Python ไป Rust
      จำนวนครั้งที่พูดถึง Python ก็แทบจะเท่ากัน
  • อยากให้มีเวอร์ชันที่สร้างสนามแข่งรถจากพื้นที่ในโลกจริง เหมือนเกม Flight Simulator รุ่นใหม่ ๆ ของ Microsoft
    • หรือจะเป็น GTA: Auburn, AL ก็ได้
  • ลิงก์อ้างอิงเกี่ยวกับสภาพอากาศแบบเรียลไทม์ การบิน การจราจร ห้องนักบินที่ใช้ React ข้อมูล Google Earth GlTF แบบโอเพนซอร์ส และแอป flight simulator อย่าง MSFS/X-Plane: https://news.ycombinator.com/item?id=38437821
    การแยกว่า การอ้างอิงตำแหน่งอย่างคำพูดหรือรูปแบบ (lat,long,game) เป็นตำแหน่งในเกม หรือเป็นตำแหน่งเสมือนในเกมที่มีชื่อเดียวกัน อาจง่ายกว่าก็ได้

เอกสารเกี่ยวกับไทล์ 3D GlTF ของ Google Maps https://developers.google.com/maps/documentation/tile/3d-til... ระบุว่า หากต้องการเรนเดอร์ไทล์สมจริงของ Google ต้องใช้เรนเดอร์เรอร์ 3D Tiles ที่รองรับการแสดงข้อมูลลิขสิทธิ์ และสามารถใช้ CesiumJS หรือ Cesium for Unreal ได้
เกมแนว Minecraft แบบโอเพนซอร์สที่มี Python API มี sensorcraft ซึ่งใช้ pyglet สำหรับ OpenGL 3D และครอบคลุม self.add_block(), แรงโน้มถ่วง, AI, วงจร ฯลฯ
WebGL พกพาได้ดีกว่า OpenGL และก็สงสัยด้วยว่าสามารถคอมไพล์ pyglet เป็น WASM ได้ไหม
เข้าใจว่า panda3d และ godot คอมไพล์เป็น WASM ได้ง่าย
เอนจินฟิสิกส์โอเพนซอร์สบน Python ที่อาจเป็นประโยชน์ต่อ Minecraft clone มี 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 ยังพูดถึง luanti, minetest, mcpi, MCPI-Revival/minecraft-pi-reborn ด้วย

  • FlightGear เคยทำสิ่งที่คล้ายกันมานานแล้ว แต่เป็นแค่ส่วนแผนที่เท่านั้น
  • แปลกมากที่คอมเพล็กซ์อพาร์ตเมนต์ของผมไม่ถูกเรนเดอร์ แต่ตึกใกล้ ๆ กับสระว่ายน้ำกลับถูกเรนเดอร์
    ผมตรวจข้อมูล OSM แล้วด้วย เลยยิ่งแปลก
    ในทางกลับกัน โรงเรียนของลูกอยู่ไม่ไกลและถูกเรนเดอร์ค่อนข้างละเอียด
    พอลองขุดต่อ พบว่าตึกนั้นถูกเรนเดอร์ใน OSM เป็น multipolygon ที่มีสองเลเยอร์ต่างกัน ส่วนที่เหลือดูเหมือนจะเรนเดอร์จากชุดของโหนด
  • เจ๋งมาก การสร้าง รางรถไฟ Chicago L น่าจะเป็นความท้าทายเชิงอัลกอริทึมอยู่ไม่น้อย
  • ถ้าเอา point map ที่ญี่ปุ่นเผยแพร่ไว้มาจับคู่กับ OpenStreetMap เพื่อสร้างอาคารที่ละเอียดขึ้นก็คงดี
    • อยากทราบลิงก์ของ point map