このプロジェクトについて
bareironは、メモリ制約のある組み込みシステムを対象としたミニマリストなMinecraftサーバー実装です。その目標は、ESP32などの非常に性能の低いデバイスでMinecraftサーバーをホストできるようにすることです。このプロジェクトは、優先順位を明示的に「メモリ使用量が第一、パフォーマンスが第二、機能が第三」と定めており、バニラMinecraftとの互換性は保証も目標でもないと述べています。
対象互換性はMinecraftバージョン1.21.8、プロトコルバージョン772です。READMEは、公式にサポートされているのはバニラクライアントのみであり、Fabricや類似のクライアントを使用した場合に問題が報告されていると警告しています。
PC x86_64プラットフォームでの開始方法は、最新のビルドバイナリをダウンロードして実行することです。このファイルはCosmopolitanポリグロットとして説明されており、ファイル拡張子に関係なくWindows、Linux、場合によってはMacで実行できます。READMEは、サーバーのデフォルト設定はソースからコンパイルしない限り再設定できないと述べています。
マイクロコントローラーの場合、コンパイルが必要です。コンパイル前に、バニラMinecraftサーバーからレジストリデータをダンプする必要があります。Linuxでは、同梱のextract_registries.shスクリプトで自動化できます。それ以外の場合は、MinecraftサーバーJARをnotchianフォルダーに配置し、Minecraft Wikiのデータジェネレーターガイドに従ってすべてのレジストリをダンプし、その後bun、node、またはdenoでbuild_registries.jsを実行するプロセスが必要です。
コンパイル手順はいくつかの環境をカバーしています:gccと./build.shを使用したLinux;ネイティブバイナリ用のMSYS2 MINGW64を使用したWindows、--9xフラグによるWindows 95/98互換の32ビット版、MSYS2リンクバイナリ、またはLinuxバイナリのビルドと実行用のWSL。ESPバリアントの場合、READMEはESP-IDFフレームワーク(Arduinoではないことを明示)を使用してPlatformIOプロジェクトをセットアップし、その上にリポジトリをクローンするよう指示しており、パフォーマンス向上のためにクロック速度の調整とコンパイラ最適化の有効化を提案しています。
設定もソースからのコンパイルが必要です。最もユーザーフレンドリーなオプションはinclude/globals.hにあり、組み込みセットアップ用のWiFi認証情報が含まれ、MOTDや開始時刻などの詳細はsrc/globals.cにあります。READMEは、実際のマイクロコントローラー展開に関連するいくつかのオプションを強調しています:移動ブロードキャストは、プレイヤー数、MCUパフォーマンス、ネットワーク帯域幅に応じて接続を調整でき、BROADCAST_ALL_MOVEMENTとSCALE_MOVEMENT_UPDATES_TO_PLAYER_COUNTをコメントアウトするか、より多くの計算コストと引き換えにTIME_BETWEEN_TICKSを下げることで調整できます。チェストと流体の流れは、クラッシュや不安定性を引き起こす場合、ALLOW_CHESTSとDO_FLUID_FLOWで無効にできます。VISITED_HISTORYを増やすと、頻繁な繰り返しチャンク生成に役立つ可能性があり、64に上げた場合、割り当てられたプレイヤーごとに約240バイトの追加メモリコストがかかると述べられています。
オプションのセクションでは、シャットダウン後にワールドデータを永続化したいESPターゲット向けの不揮発性ストレージについて説明しています。PCプラットフォームでは、ワールドデータとプレイヤーデータがデフォルトでworld.binに書き込まれるため、これは不要です。最も簡単なアプローチは、PlatformIOでLittleFSをセットアップし、globals.hのSYNC_WORLD_TO_DISKを囲む#ifndefをコメントアウトすることです。フラッシュ書き込みは通常遅くブロッキングされるため、DISK_SYNC_BLOCKS_ON_INTERVALのコメントを解除することが提案され、MAX_BLOCK_CHANGESはLittleFSパーティションに収まるように減らす必要があるかもしれません。SDカードモジュールや他の仮想ファイルシステムの場合、ファイルシステムセットアップルーチンはユーザーが実装する必要がありますが、組み込みのシリアライザーはPOSIXファイルシステム呼び出しを使用するため、引き続き機能するはずです。代替として、DEV_ENABLE_BEEF_DUMPSのコメントを解除することで、ワールドデータをダンプしてTCPでアップロードできます。このシステムはセキュリティや認証を実装しておらず、サーバーにアクセスできる人は誰でも任意のワールドデータをアップロードできる可能性があるという明示的な注意事項があります。
貢献ガイドラインでは、小さな変更でもプルリクエストの前に問題を作成し、メンテナーと議論すること、既存のコードスタイルに従うこと、レビューを依頼する前にコードをテストすること、そして開発ツールやコンパイルの改善は、貢献者がコードベースを十分に長く扱って実際的な欠点に気づかない限り歓迎されないと述べています。READMEはプロトコル情報についてMinecraft Wikiを指し示し、その他すべてについては検索エンジンを提案しています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.