-
CobolCraft
- COBOLで書かれたMinecraftサーバーで、Minecraft 1.21.4バージョンをサポート
-
機能
- 以下の機能はすでに実装済み
- 無限地形生成と動的チャンク読み込み
- ワールドおよびプレイヤーデータのディスク保存
- Minecraftファイル形式をサポート(既存ワールドのインポート)
- 最大10人の同時プレイヤーに対応するマルチプレイヤー
- Ping/サーバーステータス(サーバー一覧でオンライン表示)
- ブロックの破壊と設置
- ブロックとのインタラクション(右クリック、例: ドアを開く)
- プレイヤーインベントリ(クリエイティブモード限定)
- チャット
- コマンド(ゲーム内および対話型コンソール経由)
server.propertiesによる設定
- ホワイトリスト(永続化;
whitelist.jsonに保存)
- 複数の状態、方向、インタラクションを持つブロックは多くの専用コードを必要とし、このプロジェクトの範囲を超える
- 一部サポートされているブロック: 松明、スラブ、階段、回転した柱、ボタン、ドア、トラップドア、ベッド
-
使用方法
- GnuCOBOLを使用して開発されており、Linuxで実行するよう設計されている
- Windowsのような他のOS向けサポートはテストされていないが、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ライセンスの下で公開されており、サードパーティライブラリのCBL_GC_SOCKETはLGPL v3ライセンスの下で提供される
- "Minecraft"はMojang Synergies ABの商標であり、CobolCraftはMojangとは無関係で、承認も受けていない
1件のコメント
Hacker Newsの意見
COBOLには多くの噂や悪評がある。それを知るために、プロジェクトを通じてCOBOLを体験してみたい。新しくCOBOLを使う人が得た洞察を知りたい
シンプルな言語で書かれた小さなプロジェクトは印象的だ。一方で、Rustのような現代的な言語で書かれたプロジェクトは非効率的だ
1978年以降COBOLの使用をやめた。このコードは二度と見たくない
COBOLのコードは、手続き型言語の背景がある人には理解しやすい。20年前にVBで書かれたゲームサーバーを思い出させる
COBOLのコードは非常に読みやすい。現代言語と比べても理解しやすい
パキスタンの小さな町で高校時代にCOBOLを学んだ。財務報告をシミュレーションするプロジェクトをやった。COBOLの悪評が理解できない
COBOLはすてきな言語に見える。コードがよく整理されている
40年後、世界中の経営陣が「COBOL Minecraftサーバーは失われた」と言うだろう
COBOL Minecraftサーバーがレッドストーンをサポートしているかは分からない。READMEには言及がなく、コードではレッドストーントーチにしか触れられていない