-
CobolCraft
- เซิร์ฟเวอร์ Minecraft ที่เขียนด้วย COBOL รองรับ Minecraft เวอร์ชัน 1.21.4
-
ฟีเจอร์
- ฟีเจอร์ต่อไปนี้ถูกพัฒนาไว้แล้ว
- สร้างภูมิประเทศแบบไม่สิ้นสุดและโหลดชังก์แบบไดนามิก
- บันทึกข้อมูลโลกและผู้เล่นลงดิสก์
- รองรับรูปแบบไฟล์ Minecraft (นำเข้าโลกเดิมได้)
- มัลติเพลเยอร์รองรับผู้เล่นพร้อมกันสูงสุด 10 คน
- Ping/สถานะเซิร์ฟเวอร์ (แสดงว่าออนไลน์ในรายชื่อเซิร์ฟเวอร์)
- ทำลายและวางบล็อก
- การโต้ตอบกับบล็อก (คลิกขวา เช่น เปิดประตู)
- อินเวนทอรีของผู้เล่น (จำกัดเฉพาะโหมดสร้างสรรค์)
- แชต
- คำสั่ง (ทั้งในเกมและผ่านคอนโซลแบบโต้ตอบ)
- การตั้งค่าผ่าน
server.properties
- ไวต์ลิสต์ (คงอยู่ถาวร; บันทึกใน
whitelist.json)
- บล็อกที่มีหลายสถานะ หลายทิศทาง และมีการโต้ตอบ ต้องใช้โค้ดเฉพาะทางจำนวนมาก ซึ่งเกินขอบเขตของโปรเจ็กต์นี้
- บล็อกที่รองรับบางส่วน: คบเพลิง, แผ่นสลับระดับ, บันได, เสาหมุน, ปุ่ม, ประตู, trapdoor, เตียง
-
วิธีใช้งาน
- พัฒนาด้วย GnuCOBOL และออกแบบมาให้ทำงานบน Linux
- การรองรับระบบปฏิบัติการอื่น เช่น Windows ยังไม่ได้ทดสอบ แต่สามารถแจกจ่ายแบบไม่ขึ้นกับแพลตฟอร์มได้ด้วย Docker
- หากจะติดตั้งบน Linux ต้องมีสิ่งต่อไปนี้ติดตั้งไว้ก่อน
cobc, make, g++, zlib, curl, Java เวอร์ชันล่าสุด
- รัน
make เพื่อ build และ make run เพื่อเริ่มเซิร์ฟเวอร์ที่พอร์ต 25565
- หากใช้ Docker:
- ดึงอิมเมจจาก Docker Hub หรือ build เองได้
- เมื่่อรัน Docker container สามารถตั้งค่าให้เข้าถึงจากภายนอกได้
-
ทำไมถึงทำ?
- มีข่าวลือและภาพลักษณ์ด้านลบเกี่ยวกับ COBOL อยู่มาก จึงอยากใช้โปรเจ็กต์นี้เพื่อเรียนรู้ภาษานี้ให้มากขึ้น
- COBOL เหมาะกับแอปพลิเคชันธุรกิจ และไม่เหมาะกับการจัดการข้อมูลระดับล่างที่โปรโตคอล Minecraft ต้องการ
- แต่ก็ไม่ยอมเลิกก่อนจะสร้างต้นแบบที่ใช้งานได้สำเร็จ
- ประสิทธิภาพได้มาจากการเข้ารหัสและถอดรหัสข้อมูล
-
ภาพรวมของโปรแกรม
-
องค์ประกอบของซอร์ส
- จุดเริ่มต้นของโปรแกรมคือ
main.cob และซอร์ส COBOL ที่เหลืออยู่ในไดเรกทอรี src/
- TCP socket จัดการผ่านไลบรารี socket
CBL_GC_SOCKET
-
Packet blob
- ใช้ข้อมูลเครือข่ายที่จับผ่าน Wireshark และเก็บไว้ในไดเรกทอรี
blobs/
-
การดึงข้อมูล
- ข้อมูลจำนวนมากสามารถดึงได้จากแอปพลิเคชันเซิร์ฟเวอร์และไคลเอนต์ Minecraft อย่างเป็นทางการ
Makefile ของ CobolCraft มี target สำหรับดาวน์โหลดไฟล์ .jar และดึงข้อมูล JSON
-
ข้อกฎหมาย
- โปรเจ็กต์นี้อยู่ภายใต้ไลเซนส์ MIT และไลบรารีภายนอก CBL_GC_SOCKET อยู่ภายใต้ไลเซนส์ LGPL v3
- "Minecraft" เป็นเครื่องหมายการค้าของ Mojang Synergies AB และ CobolCraft ไม่มีความเกี่ยวข้องกับหรือได้รับการรับรองจาก Mojang
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
มีข่าวลือและภาพลักษณ์ด้านลบเกี่ยวกับ COBOL อยู่มาก เลยอยากลองสัมผัส COBOL ผ่านโปรเจกต์เพื่อทำความเข้าใจให้มากขึ้น และอยากรู้ว่าคนที่เพิ่งเริ่มใช้ COBOL จะได้ข้อคิดอะไรบ้าง
โปรเจกต์เล็ก ๆ ที่เขียนด้วยภาษาง่าย ๆ แบบนี้น่าประทับใจ ตรงกันข้าม โปรเจกต์ที่เขียนด้วยภาษาสมัยใหม่อย่าง Rust กลับดูไร้ประสิทธิภาพ
เลิกใช้ COBOL มาตั้งแต่ปี 1978 แล้ว และไม่อยากเห็นโค้ดแบบนี้อีกเลย
โค้ด COBOL เข้าใจง่ายสำหรับคนที่มีพื้นฐานภาษากระบวนวิธี ทำให้นึกถึงเกมเซิร์ฟเวอร์ที่เขียนด้วย VB เมื่อ 20 ปีก่อน
โค้ด COBOL อ่านง่ายมาก เมื่อเทียบกับภาษาสมัยใหม่แล้วเข้าใจได้ง่ายกว่า
ตอนเรียนมัธยมในเมืองเล็ก ๆ แห่งหนึ่งของปากีสถาน เคยเรียน COBOL และทำโปรเจกต์จำลองรายงานทางการเงิน เลยไม่เข้าใจว่าทำไม COBOL ถึงมีภาพลักษณ์ด้านลบ
COBOL ดูเป็นภาษาที่เจ๋งดี โค้ดจัดระเบียบไว้ดีมาก
อีก 40 ปีข้างหน้า ผู้บริหารทั่วโลกคงจะพูดว่า "เซิร์ฟเวอร์ Minecraft ที่เขียนด้วย COBOL หายไปแล้ว"
ไม่แน่ใจว่าเซิร์ฟเวอร์ Minecraft ที่เขียนด้วย COBOL รองรับ Redstone หรือไม่ เพราะใน README ไม่ได้พูดถึง และในโค้ดก็มีการพูดถึงแค่คบเพลิง Redstone เท่านั้น