Arnis เทคโนโลยีสร้างเมือง Minecraft โดยใช้ OpenStreetMap
(github.com/louis-e)- 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 แล้ว การเปลี่ยนแปลงจะถูกรวมอยู่ในรีลีสอัปเดตตามรอบ
การเป็นที่รู้จัก ไลเซนส์ และแหล่งที่มาอย่างเป็นทางการ
- Arnis ได้รับความสนใจมากขึ้นหลังเดือนธันวาคม 2024 และถูกกล่าวถึงในสื่อวิชาการและสื่อหลายแห่ง
- Building realistic Minecraft worlds with Open Data on AWS: How Arnis uses elevation datasets at scale
- Floodcraft: Game-based Interactive Learning Environment using Minecraft for Flood Mitigation and Preparedness for K-12 Education
- Hackaday: Bringing OpenStreetMap Data into Minecraft
- TomsHardware: Minecraft Tool Lets You Create Scale Replicas of Real-World Locations
- XDA Developers: Hometown Minecraft Map: Arnis
- Arnis เผยแพร่ภายใต้ Apache License 2.0
- การแมปชื่อบล็อก Luanti ใน
src/luanti_block_map.rsดัดแปลงมาจาก MC2MT และอยู่ภายใต้ไลเซนส์ GNU Lesser General Public License v2.1 ขึ้นไป - เว็บไซต์โปรเจกต์อย่างเป็นทางการมีเพียง arnismc.com และ GitHub repository เท่านั้น
- การดาวน์โหลดจากเว็บไซต์อื่นไม่เป็นทางการและอาจเป็นอันตรายได้
- Arnis ไม่ใช่ผลิตภัณฑ์ Minecraft อย่างเป็นทางการ และไม่ได้รับการรับรองหรือมีความเกี่ยวข้องกับ Mojang หรือ Microsoft
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
กว่า 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 ด้วย
https://www.reddit.com/r/gis/comments/qg4b6j/is_it_possible_...
Geonames ก็ให้บริการค้นหาความสูงโดยอิงจาก SRTM และข้อมูลอื่น ๆ: http://www.geonames.org/export/web-services.html
แต่ถ้าต้องสุ่มตัวอย่างพื้นที่กว้างแบบละเอียด อาจติดข้อจำกัด API หรือทำให้บริการโอเวอร์โหลดได้
อย่างไรก็ดี นี่แสดงให้เห็นว่าบุคคลที่สามสามารถจัดหาชุดข้อมูลแล้วให้บริการ API บนข้อมูลนั้นได้
เท่าที่รู้ GPL ไม่มีข้อห้ามเรื่อง การสร้างฮีโร่ปลอม
อย่างไรก็ตาม มีข้อยกเว้นในกรณีที่ผลลัพธ์มีส่วนหนึ่งของซอร์สโปรแกรมเองรวมอยู่ด้วย เช่นตัวสร้าง lexer/parser และไลเซนส์ GNU Bison ก็มีข้อยกเว้นที่ระบุชัดว่าอนุญาตเรื่องนี้
ใน Minecraft มี Redstone และ Command Blocks และผู้คนก็สร้างสิ่งอย่าง 8086 หรือ Tetris กันมาแล้ว
เลยสงสัยว่าจะมีกรณีก้ำกึ่งไหมที่โลกซึ่งสร้างจากเครื่องมือสร้างโลกแบบนี้จะถูก “ปนเปื้อน” GPL
ส่วนตัวชอบไลเซนส์ BSD/MIT มากกว่าด้วยเหตุผลแบบนี้ ไม่อยากต้องเสียค่าทนายกับคำถามง่าย ๆ อย่าง “ใช้โปรแกรมนี้จริง ๆ ได้ไหม?”
อยากใช้ช่วยให้เด็ก ๆ คุ้นเคยกับย่านของเรามากขึ้น
ผมเหนื่อยกับการต้องถามชื่อถนนหรือว่าต้องเลี้ยวไปทางไหนตลอด และบางครั้งก็ให้คำแนะนำแบบ turn-by-turn เต็มรูปแบบด้วย
จนถึงตอนนี้หลงทางไปแค่ไม่กี่ครั้งเอง
แต่อาจไม่ได้ละเอียดเท่าโปรเจกต์นี้
[0]: https://minecraft.ign.fr/
https://youtube.com/watch?v=vl_MExz52jA
และวิดีโอเนื้อหาเดียวกันพร้อมคำอธิบายที่ดูเหมือนเด็ก:
https://youtu.be/7JYjxSfvJQk?feature=shared
ในเมื่อเคยมี implementation เดิมด้วย Python มาก่อน การบอกไว้ช่วงต้นว่าเวอร์ชันนี้ต่างอย่างไรก็ดูสมเหตุสมผล
ไม่ใช่ว่าเป็นคำจริงที่ขึ้นต้นด้วย J ด้วยซ้ำ แค่เอา J ไปแปะไว้หน้าชื่ออะไรก็ได้
จำนวนครั้งที่พูดถึง Python ก็แทบจะเท่ากัน
การแยกว่า การอ้างอิงตำแหน่งอย่างคำพูดหรือรูปแบบ
(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ด้วยผมตรวจข้อมูล OSM แล้วด้วย เลยยิ่งแปลก
ในทางกลับกัน โรงเรียนของลูกอยู่ไม่ไกลและถูกเรนเดอร์ค่อนข้างละเอียด
พอลองขุดต่อ พบว่าตึกนั้นถูกเรนเดอร์ใน OSM เป็น multipolygon ที่มีสองเลเยอร์ต่างกัน ส่วนที่เหลือดูเหมือนจะเรนเดอร์จากชุดของโหนด