1 คะแนน โดย GN⁺ 2024-12-27 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 ความคิดเห็น

 
GN⁺ 2024-12-27
ความคิดเห็นบน Hacker News
  • มีข่าวลือและภาพลักษณ์ด้านลบเกี่ยวกับ COBOL อยู่มาก เลยอยากลองสัมผัส COBOL ผ่านโปรเจกต์เพื่อทำความเข้าใจให้มากขึ้น และอยากรู้ว่าคนที่เพิ่งเริ่มใช้ COBOL จะได้ข้อคิดอะไรบ้าง

    • ตอนทำโปรเจกต์จบมัธยมปลาย เคยเขียนระบบ COBOL สำหรับทำระบบอัตโนมัติของอัตราต่อรองพนันฟุตบอล ล้าสมัยก็จริง แต่สนุกดี
    • COBOL มีเสน่ห์ที่ชวนให้นึกถึงยุคบัตรเจาะรู
  • โปรเจกต์เล็ก ๆ ที่เขียนด้วยภาษาง่าย ๆ แบบนี้น่าประทับใจ ตรงกันข้าม โปรเจกต์ที่เขียนด้วยภาษาสมัยใหม่อย่าง Rust กลับดูไร้ประสิทธิภาพ

    • ภาษาที่เรียบง่ายทำให้เอาไอเดียไปลงมือทำได้ง่าย แต่ภาษาสมัยใหม่บังคับให้ต้องเขียนโค้ดแบบที่ดูแลต่อได้ในระยะยาว
  • เลิกใช้ COBOL มาตั้งแต่ปี 1978 แล้ว และไม่อยากเห็นโค้ดแบบนี้อีกเลย

  • โค้ด COBOL เข้าใจง่ายสำหรับคนที่มีพื้นฐานภาษากระบวนวิธี ทำให้นึกถึงเกมเซิร์ฟเวอร์ที่เขียนด้วย VB เมื่อ 20 ปีก่อน

  • โค้ด COBOL อ่านง่ายมาก เมื่อเทียบกับภาษาสมัยใหม่แล้วเข้าใจได้ง่ายกว่า

  • ตอนเรียนมัธยมในเมืองเล็ก ๆ แห่งหนึ่งของปากีสถาน เคยเรียน COBOL และทำโปรเจกต์จำลองรายงานทางการเงิน เลยไม่เข้าใจว่าทำไม COBOL ถึงมีภาพลักษณ์ด้านลบ

  • COBOL ดูเป็นภาษาที่เจ๋งดี โค้ดจัดระเบียบไว้ดีมาก

  • อีก 40 ปีข้างหน้า ผู้บริหารทั่วโลกคงจะพูดว่า "เซิร์ฟเวอร์ Minecraft ที่เขียนด้วย COBOL หายไปแล้ว"

  • ไม่แน่ใจว่าเซิร์ฟเวอร์ Minecraft ที่เขียนด้วย COBOL รองรับ Redstone หรือไม่ เพราะใน README ไม่ได้พูดถึง และในโค้ดก็มีการพูดถึงแค่คบเพลิง Redstone เท่านั้น