Arnis โปรเจกต์ Open Source เปลี่ยนโลกจริงสู่จักรวาล Minecraft

· By: SirilukP

Arnis โปรเจกต์ Open Source เปลี่ยนโลกจริงสู่จักรวาล Minecraft

Louis Erbkamm รู้จักเส้นทางใน Arnis ซึ่งเป็นเมืองที่เล็กที่สุดในเยอรมนีเป็นอย่างดี แม้เขาจะไม่เคยย่างกรายไปที่นั่นเลยแม้แต่ครั้งเดียวก็ตาม

ผมรู้ว่าร้านค้าอยู่ที่ไหน เรือจอดตรงไหน… ผมรู้จักเมืองนี้ดีพอสมควร แต่ผมยังไม่เคยไปที่นั่นเลย

Louis Erbkamm, maintainer ของ Arnis

Arnis ยังเป็นชื่อโปรเจกต์โอเพนซอร์สของเขาที่นำข้อมูลโลกจริงจาก OpenStreetMap และแหล่งข้อมูลอื่นมาแปลงเป็นโลก Minecraft ให้ผู้เล่นสำรวจได้อย่างอิสระ นับตั้งแต่เริ่มโปรเจกต์ในปี 2022 มียอดดาวน์โหลดจาก GitHub แล้วเกือบ 900,000 ครั้ง และมีผู้มีส่วนร่วมประมาณ 70 คน

สองสัปดาห์กับต้นแบบที่เชื่องช้า

Louis เติบโตมากับการเล่น Minecraft และเริ่มเขียนโค้ดตั้งแต่อายุ 13 ปี โดยพยายามนำทักษะการเขียนโปรแกรมมาปรับใช้กับเกมโปรด Arnis เริ่มต้นจากงานอดิเรกที่ผสมผสานเกมเข้ากับข้อมูลภูมิสารสนเทศ เขาพัฒนาต้นแบบแรกเสร็จภายในสองสัปดาห์ระหว่างช่วงปิดเทอมและเก็บไว้บน GitHub

เวอร์ชันแรกเขียนด้วยภาษา Python และพึ่งพาข้อมูลจาก OpenStreetMap เพียงอย่างเดียว ซึ่งทำให้การสร้างเมืองหนึ่งเมืองใช้เวลานานมาก เขาเลือกเมือง Arnis ในเยอรมนีเป็นสถานที่ทดสอบเพราะเป็นเมืองขนาดเล็กที่มีองค์ประกอบครบถ้วน ทั้งอาคาร ถนน และแหล่งน้ำ ซึ่งเหมาะอย่างยิ่งสำหรับการทดสอบระบบในช่วงเริ่มต้นที่ยังทำงานได้ช้า

ชุมชนที่นำไอเดียมาแบ่งปัน

เมื่อ Arnis เริ่มพัฒนาให้รองรับความสูงต่ำของพื้นที่จนโลกในเกมไม่แบนราบอีกต่อไป ผู้เชี่ยวชาญด้านภูมิสารสนเทศจากทั่วทุกมุมโลกต่างเข้ามาแลกเปลี่ยนไอเดีย Louis กล่าวว่าการมีส่วนร่วมของชุมชนคือสิ่งที่เขาต้องการมากที่สุด

การตัดสินใจสำคัญเกิดขึ้นอย่างโปร่งใส เช่น การพอร์ตโค้ดจาก Python ไปเป็น Rust ซึ่ง Louis ได้เปิดการหารือบน GitHub เพื่อฟังมุมมองที่หลากหลาย ปัจจุบันผู้มีส่วนร่วมได้ช่วยแปล Arnis เป็นภาษาต่างๆ กว่า 20 ภาษา และช่วยพัฒนาฟีเจอร์หลักๆ ขึ้นมามากมาย

ถังขยะเข้าไปอยู่ใน Minecraft ได้อย่างไร

ฟีเจอร์บางอย่างเกิดขึ้นจากการสังเกตในชีวิตประจำวัน Louis พบว่าในเมืองจริงมีถังขยะจำนวนมากแต่ในโลก Minecraft ที่เขาสร้างกลับไม่มีเลย เขาจึงขอความเห็นจากชุมชนเพื่อหาบล็อกที่เหมาะสมมาใช้แทน

กระบวนการวางวัตถุใน Arnis จะอ้างอิงพิกัดและประเภทองค์ประกอบจาก OpenStreetMap หากเป็นโครงสร้างที่มีรายละเอียดซับซ้อนเกินกว่าที่แผนที่จะระบุได้ เช่น เทพีเสรีภาพ หรือรูปปั้นพระคริสต์ผู้ไถ่ Arnis จะใช้วิธีแปลงโมเดล 3D ให้กลายเป็นบล็อก Minecraft แทน

Maintainer หนึ่งคน กับรายการ Pull Request กองโต

ในฐานะผู้ดูแลเพียงคนเดียว Louis ต้องตรวจสอบทุก pull request ด้วยตัวเองในช่วงเย็นหรือวันหยุดสุดสัปดาห์ เขาจึงนำ GitHub Copilot มาใช้เพื่อช่วยดูภาพรวมของ issue และ bug จากเวอร์ชันล่าสุด รวมถึงติดตามตำแหน่งต้นตอของปัญหาใน codebase และสร้างแนวทางแก้ไข

การนำ AI เข้ามาช่วยทำให้เขาสามารถตรวจสอบโค้ดและจัดทำเอกสารประกอบได้มากขึ้น Louis ระบุว่าเขาสามารถมอบหมายงานที่น่าเบื่อให้ Copilot ทำแทน เพื่อที่เขาจะได้มีเวลาไปโฟกัสกับการพัฒนาฟีเจอร์ที่น่าสนใจจริงๆ

Sub-agents ที่ช่วยตรวจสอบความถดถอย

สำหรับ pull request ขนาดใหญ่ Louis จะใช้ GitHub Copilot ตรวจสอบประสิทธิภาพและมองหาจุดที่สามารถลดการใช้หน่วยความจำหรือเวลาในการประมวลผลได้ เพราะความผิดพลาดเพียงจุดเดียว เช่น การคำนวณเสาไฟถนนผิดพลาด อาจส่งผลให้การสร้างเมืองทั้งเมืองช้าลงอย่างมาก

นอกจากนี้ เขายังเริ่มใช้งาน sub agents ผ่านแอป GitHub Copilot เพื่อตรวจสอบกรณีพิเศษ (corner cases) และป้องกันการเกิดความถดถอย (regressions) ในเวอร์ชันใหม่ โดยเขาชื่นชอบที่สามารถจัดการทั้ง terminal, ไฟล์โค้ด และการสนทนากับ AI ได้ภายในหน้าต่างเดียว

ห้องเรียนที่คาดไม่ถึงและก้าวต่อไป

การใช้งาน Arnis ที่ Louis ประทับใจที่สุดคือในสถานศึกษา ครูหลายคนใช้เครื่องมือนี้สร้างเมืองจำลองให้นักเรียนได้แข่งขันกันปรับปรุงสวนสาธารณะหรือสนามเด็กเล่นผ่าน Minecraft ซึ่งช่วยให้เห็นภาพการพัฒนาพื้นที่จริงได้อย่างชัดเจน

เป้าหมายต่อไปของ Arnis คือการเพิ่มความละเอียดให้มากขึ้นในเวลาที่น้อยลง ปัจจุบันโปรเจกต์ได้ขยายขอบเขตไปถึงดวงจันทร์และดาวอังคารแล้ว Louis หวังว่าเครื่องมือนี้จะถูกนำไปใช้ในโรงเรียนมากขึ้นเพื่อให้เด็กๆ ได้สนุกกับการเรียนรู้ผ่านสถานที่ที่พวกเขารู้จัก

เริ่มต้นด้วยเมืองบ้านเกิดของคุณ

ผู้ที่สนใจสามารถดาวน์โหลด Arnis ได้ที่ github.com/louis-e/arnis เพียงเลือกสถานที่บนแผนที่และคลิก Start Generation โลกจำลองจะพร้อมให้สำรวจใน Minecraft ภายในไม่กี่นาที Louis แนะนำให้เริ่มจากสถานที่ที่คุ้นเคย เช่น เมืองบ้านเกิด หรือสถานที่ท่องเที่ยวอย่าง Grand Canyon เพื่อตรวจสอบดูว่ามีรายละเอียดส่วนไหนที่ยังขาดหายไปและช่วยกันปรับปรุงให้สมบูรณ์ขึ้น

Source: GitHub Blog
ดูแลงานแปลและเรียบเรียงโดย SirilukP

ความคิดเห็น (0)

เข้าสู่ระบบเพื่อร่วมแสดงความเห็น

สมัครสมาชิก

มาเป็นคนแรกที่แสดงความเห็นกันเลยโบร