1P by neo 18일전 | ★ favorite | 댓글 1개
  • CobolCraft

    • COBOL로 작성된 Minecraft 서버로, Minecraft 1.21.4 버전을 지원함
  • 기능

    • 다음 기능들이 이미 구현되어 있음
      • 무한 지형 생성 및 동적 청크 로딩
      • 월드 및 플레이어 데이터 디스크 저장
      • Minecraft 파일 형식 지원 (기존 월드 가져오기)
      • 최대 10명의 동시 플레이어를 지원하는 멀티플레이어
      • 핑/서버 상태 (서버 목록에 온라인으로 표시)
      • 블록 파괴 및 배치
      • 블록 상호작용 (오른쪽 클릭, 예: 문 열기)
      • 플레이어 인벤토리 (창의적 모드로 제한)
      • 채팅
      • 명령어 (게임 내 및 대화형 콘솔을 통해)
      • server.properties를 통한 설정
      • 화이트리스트 (지속적; whitelist.json에 저장)
    • 다중 상태, 방향, 상호작용 블록은 많은 전문 코드가 필요하며, 이 프로젝트의 범위를 초과함
      • 일부 지원되는 블록: 횃불, 슬래브, 계단, 회전된 기둥, 버튼, 문, 트랩도어, 침대
  • 사용 방법

    • GnuCOBOL을 사용하여 개발되었으며, Linux에서 실행하도록 설계됨
    • Windows와 같은 다른 운영 체제에 대한 지원은 테스트되지 않았으나, Docker를 사용하여 플랫폼 독립적 배포 가능
    • Linux에서 배포하려면 다음 전제 조건이 설치되어야 함
      • cobc, make, g++, zlib, curl, 최신 Java 버전
    • make를 실행하여 빌드하고, make run으로 포트 25565에서 서버 시작
    • Docker 사용 시:
      • Docker Hub에서 이미지 가져오기 또는 직접 빌드 가능
      • Docker 컨테이너 실행 시 외부에서 접근 가능하도록 설정 가능
  • 왜?

    • COBOL에 대한 많은 소문과 오명이 있어, 프로젝트를 통해 이 언어에 대해 더 알아보고자 함
    • COBOL은 비즈니스 애플리케이션에 적합하며, Minecraft 프로토콜이 요구하는 저수준 데이터 조작에는 적합하지 않음
    • 그러나 작동하는 프로토타입을 만들기 전에는 포기하지 않음
    • 데이터 인코딩 및 디코딩을 통해 성능을 확보함
  • 프로그램 개요

    • 소스 구성 요소

      • 프로그램 진입점은 main.cob이며, 나머지 COBOL 소스는 src/ 디렉토리에 위치
      • TCP 소켓은 CBL_GC_SOCKET 소켓 라이브러리로 관리됨
    • 패킷 블롭

      • Wireshark를 통해 캡처된 네트워크 데이터를 사용하며, blobs/ 디렉토리에 위치
    • 데이터 추출

      • 공식 Minecraft 서버 및 클라이언트 애플리케이션에서 많은 데이터를 추출 가능
      • CobolCraft Makefile은 .jar 파일을 다운로드하고 JSON 데이터를 추출하는 타겟을 포함함
  • 법적 고지

    • 이 프로젝트는 MIT 라이선스 하에 있으며, 3자 라이브러리 CBL_GC_SOCKET은 LGPL v3 라이선스 하에 있음
    • "Minecraft"는 Mojang Synergies AB의 상표이며, CobolCraft는 Mojang과 관련이 없고 승인되지 않음
Hacker News 의견
  • COBOL에 대한 소문과 오명이 많음. 이를 알아보기 위해 프로젝트를 통해 COBOL을 경험해보고 싶음. 새로운 사람이 COBOL을 사용하며 얻은 통찰을 알고 싶음

    • 고등학교 졸업 프로젝트로 축구 베팅 확률을 자동화하는 COBOL 시스템을 작성했음. 시대에 뒤떨어졌지만, 재미있었음
    • COBOL은 펀치 카드 시절을 떠올리게 하는 매력이 있음
  • 간단한 언어로 작성된 작은 프로젝트가 인상적임. 반면, Rust 같은 현대 언어로 작성된 프로젝트는 비효율적임

    • 간단한 언어는 아이디어를 구현하기 쉽지만, 현대 언어는 지속 가능한 코드를 작성하도록 강요함
  • 1978년 이후 COBOL 사용을 중단했음. 다시는 이 코드를 보고 싶지 않음

  • COBOL 코드는 절차적 언어 배경이 있는 사람에게 이해하기 쉬움. 20년 전 VB로 작성된 게임 서버를 떠올리게 함

  • COBOL 코드는 매우 읽기 쉬움. 현대 언어와 비교했을 때 이해하기 쉬움

  • 파키스탄 작은 마을에서 고등학교 시절 COBOL을 배움. 금융 보고서를 시뮬레이션하는 프로젝트를 했음. COBOL의 오명을 이해하지 못함

  • COBOL은 멋진 언어로 보임. 코드가 잘 정리되어 있음

  • 40년 후, 전 세계의 경영진들이 "COBOL Minecraft 서버는 사라졌다"라고 말할 것임

  • COBOL Minecraft 서버가 레드스톤을 지원하는지 알 수 없음. README에 언급이 없고, 코드에서는 레드스톤 횃불만 언급됨