valence - Minecraft サーバーを構築するための Rust フレームワーク。

(A Rust framework for building Minecraft servers.)

Created at: 2022-01-20 21:47:27
Language: Rust
License: MIT

Minecraft: Java Edition サーバーを構築するための Rust フレームワーク。

Featherと同様に、 Valenceは Minecraft と互換性のあるサーバーを Rust で完全にゼロから構築する取り組みです。違いは、Valence が取り組みを少し異なる方法で組織化することを決定したことです。すべてのゲーム ロジックは特性の背後にあります。このアプローチには多くの利点があります。プラグイン システム、専用の実行可能ファイル、バニラ ゲーム メカニクスなどの機能は、 Valenceの上に実装できます。Valence は他のライブラリと同様に Rust ライブラリです。

将来的には、バニラのゲーム メカニクスを別のプロジェクトとして再実装することを決定する可能性があります。バニラ ゲームの仕組みを必要としないミニゲーム サーバーのようなものを開発している場合は、Valence に直接依存できます。

目標

Valence は次のことを目指します。

  • 完了します。Minecraft プロトコル全体の抽象化。
  • フレキシブル。ユースケースは、手動でパケットを送受信したり、その他のハッキングを行うことなく達成できるはずです。
  • 最小。API サーフェスは小さく、必要なものだけが公開されています。スタンドアロンの実行可能ファイル、プラグイン システム、バニラ メカニクスの再実装などの独自の機能は、Valence が提供する基盤の上に別のクレートで構築する必要があります。
  • 直感的。使いやすく誤用しにくいAPIです。広範な文書化は重要です。
  • 効率的。複数の CPU コアを考慮したシステム リソースの最適な使用。
  • 最新です。Minecraft の最新の安定版を対象としています。一度に複数のバージョンをサポートする予定はありません (ただし、プロキシを使用できます)。

現在のステータス

Valence はまだ開発の初期段階にあり、多くの機能が未実装または不完全です。ただし、基礎は整っています。注目すべき成果を次に示します。

  • [x] Minecraft の Named Binary Tag (NBT) 形式用の新しい serde ライブラリ
  • [x] 認証、暗号化、および圧縮
  • [x] ブロック状態
  • [x] チャンク
  • [x] エンティティと追跡データ
  • [x] 高速な空間エンティティ クエリのためのバウンディング ボリューム階層
  • [x] 選手リストと選手スキン
  • [x] 次元、生物群系、世界
  • [x] JSON テキスト API
  • [x] ゲームから JSON ファイルにデータを抽出する Fabric mod。これらのファイルはビルド スクリプトによって処理され、プロジェクトの Rust コードが生成されます。JSON ファイルは他のプロジェクトでも使用できます。
  • [ ] ブロック エンティティ
  • [ ] インベントリとアイテム
  • [ ] プロキシのサポート
  • [ ] サウンド、パーティクルなど
  • [ ] 継続的な衝突検出のユーティリティ

これは、例とその現在の機能の一部を示す短いビデオです。

入門

例の実行

例の 1 つを実行してみてください。リポジトリをクローンした後、実行します

cargo r -r --example conway

次に、Minecraft クライアントを開き、アドレスに接続します

localhost
。すべてがうまくいけば、サーバーでプレイする必要があります。

Valence を依存関係として追加する

Valence はcrates.ioに公開されています。実行

cargo add valence
してプロジェクトに追加します。ドキュメントはこちらから入手できます。

ただし、crates.io のバージョンは古い可能性があります。最新の開発バージョンを使用するには、リポジトリを複製し、Valence をパスの依存関係として追加します。

[dependencies]
valence = { path = "the/path/to/valence" }

を実行してドキュメントを表示します

cargo d --open

貢献する

貢献は大歓迎です!問題トラッカーを見て、何をする必要があるかを確認してください。Discordに参加して、プロジェクトについて話し合い、質問することもできます。

ライセンス

Valence のロゴはCC BY-NC-ND 4.0 の下にあり、コードはMITの下でライセンスされています。

資金調達

金銭的に貢献したい場合は、GitHub (すぐに?) またはPatreonで私 (rj00a) のスポンサーになることを検討してください。

Valence に引き続き取り組んでいきたいと思います。あなたのサポートが私を助けてくれます。ありがとう!