1 điểm bởi GN⁺ 2024-12-27 | 1 bình luận | Chia sẻ qua WhatsApp
  • CobolCraft

    • Một máy chủ Minecraft được viết bằng COBOL, hỗ trợ Minecraft phiên bản 1.21.4
  • Tính năng

    • Các tính năng sau đã được triển khai
      • Tạo địa hình vô hạn và tải chunk động
      • Lưu dữ liệu thế giới và người chơi vào đĩa
      • Hỗ trợ định dạng tệp Minecraft (nhập thế giới hiện có)
      • Chơi nhiều người hỗ trợ tối đa 10 người chơi đồng thời
      • Ping/trạng thái máy chủ (hiển thị trực tuyến trong danh sách máy chủ)
      • Phá và đặt khối
      • Tương tác với khối (nhấp chuột phải, ví dụ: mở cửa)
      • Kho đồ người chơi (giới hạn ở chế độ sáng tạo)
      • Trò chuyện
      • Lệnh (trong game và thông qua bảng điều khiển tương tác)
      • Cấu hình thông qua server.properties
      • Danh sách trắng (duy trì lâu dài; lưu trong whitelist.json)
    • Các khối có nhiều trạng thái, hướng và tương tác cần rất nhiều mã chuyên biệt, vượt quá phạm vi của dự án này
      • Một số khối được hỗ trợ: đuốc, slab, cầu thang, cột xoay, nút bấm, cửa, trapdoor, giường
  • Cách sử dụng

    • Được phát triển bằng GnuCOBOL và thiết kế để chạy trên Linux
    • Hỗ trợ cho các hệ điều hành khác như Windows chưa được kiểm thử, nhưng có thể triển khai độc lập nền tảng bằng Docker
    • Để triển khai trên Linux, cần cài đặt các điều kiện tiên quyết sau
      • cobc, make, g++, zlib, curl, phiên bản Java mới nhất
    • Chạy make để build, và make run để khởi động máy chủ trên cổng 25565
    • Khi dùng Docker:
      • Có thể lấy image từ Docker Hub hoặc tự build trực tiếp
      • Khi chạy container Docker, có thể cấu hình để truy cập được từ bên ngoài
  • Tại sao?

    • Có rất nhiều lời đồn và định kiến về COBOL, nên tác giả muốn tìm hiểu thêm về ngôn ngữ này thông qua dự án
    • COBOL phù hợp với các ứng dụng nghiệp vụ, và không phù hợp với thao tác dữ liệu mức thấp mà giao thức Minecraft yêu cầu
    • Tuy nhiên, tác giả không bỏ cuộc trước khi tạo ra được một nguyên mẫu hoạt động
    • Hiệu năng được đảm bảo thông qua mã hóa và giải mã dữ liệu
  • Tổng quan chương trình

    • Các thành phần mã nguồn

      • Điểm vào chương trình là main.cob, các mã nguồn COBOL còn lại nằm trong thư mục src/
      • Socket TCP được quản lý bằng thư viện socket CBL_GC_SOCKET
    • Packet blob

      • Sử dụng dữ liệu mạng được bắt bằng Wireshark và nằm trong thư mục blobs/
    • Trích xuất dữ liệu

      • Có thể trích xuất nhiều dữ liệu từ ứng dụng máy chủ và máy khách Minecraft chính thức
      • Makefile của CobolCraft bao gồm các target để tải xuống tệp .jar và trích xuất dữ liệu JSON
  • Thông báo pháp lý

    • Dự án này được cấp phép theo giấy phép MIT, và thư viện bên thứ ba CBL_GC_SOCKET được cấp phép theo LGPL v3
    • "Minecraft" là thương hiệu của Mojang Synergies AB, và CobolCraft không liên quan đến cũng không được Mojang phê duyệt

1 bình luận

 
GN⁺ 2024-12-27
Bình luận trên Hacker News
  • Có rất nhiều lời đồn và tai tiếng về COBOL. Tôi muốn tự mình trải nghiệm COBOL thông qua dự án này để tìm hiểu rõ hơn. Tôi cũng muốn biết những góc nhìn mà một người mới dùng COBOL có thể rút ra

    • Tôi đã viết một hệ thống COBOL để tự động hóa xác suất cược bóng đá cho đồ án tốt nghiệp trung học. Nó lỗi thời, nhưng khá thú vị
    • COBOL có một sức hút gợi nhớ đến thời đại thẻ đục lỗ
  • Một dự án nhỏ được viết bằng ngôn ngữ đơn giản tạo ấn tượng mạnh. Ngược lại, các dự án viết bằng ngôn ngữ hiện đại như Rust lại kém hiệu quả

    • Ngôn ngữ đơn giản giúp hiện thực hóa ý tưởng dễ hơn, còn ngôn ngữ hiện đại thì buộc người ta phải viết mã có tính bền vững
  • Tôi đã ngừng dùng COBOL từ sau năm 1978. Tôi không muốn nhìn lại đoạn mã này thêm lần nào nữa

  • Mã COBOL khá dễ hiểu với những ai có nền tảng ngôn ngữ lập trình thủ tục. Nó làm tôi nhớ đến một game server viết bằng VB cách đây 20 năm

  • Mã COBOL rất dễ đọc. So với các ngôn ngữ hiện đại thì nó dễ hiểu hơn

  • Tôi đã học COBOL khi còn học trung học ở một thị trấn nhỏ tại Pakistan. Tôi từng làm một dự án mô phỏng báo cáo tài chính. Tôi không hiểu vì sao COBOL lại mang tiếng xấu

  • COBOL có vẻ là một ngôn ngữ rất hay. Mã nguồn được tổ chức rất gọn gàng

  • Sau 40 năm, các giám đốc điều hành trên khắp thế giới sẽ nói rằng "Máy chủ Minecraft COBOL đã biến mất"

  • Không rõ máy chủ Minecraft viết bằng COBOL có hỗ trợ redstone hay không. README không đề cập đến điều đó, và trong mã chỉ nhắc tới đuốc redstone mà thôi