librgは、データ転送ライブラリ (ネットワーク、ファイル ストリーミングなど) とコア アプリケーション/ゲーム ロジックの間のミドルウェアとして機能する軽量ライブラリです。
図書館の主な責任は次のとおりです。
このライブラリは、マルチプレイヤー ゲームと専用ゲーム サーバーのフローのセットアップと管理の複雑さを解決するために生まれました。不要なものを取り除き、ゆっくりと現在の形に整形し、現在見て使用できるようにするという長い道のりを経てきました。
通常、ネットワーク化されたゲームの世界は、ネットワーク化されたプレーヤーのセットとネットワーク化された多数のエンティティで構成されます。エンティティとプレーヤー間の同期関係を設定する一般的な方法は、Everything-to-Everyone 接続を設定することです。
これは従うべき最も基本的な設定です。ただし、エンティティの量が増えると、帯域幅の効率がかなり悪くなります。
librg を使用すると、半径と可視性ベースのエンティティ関係を構築することで、帯域幅の使用量を大幅に削減できます。エンティティは、表示されているプレーヤーとのみ同期されます。
ライブラリの全体的なインターフェイスは、ほとんどのネットワーク ライブラリのサポートを念頭に置いて作成されました。
ネットワーキング ライブラリは以下をサポートする必要があります。
char *
バッファを送受信する機能それだけです!
サポートされているライブラリの種類のリスト:
ENet
GameNetworkingSockets
yojimbo
SLikeNet
KCP
Raknet
Websocket
WebRTC
UDP
またはTCP
ベースのライブラリ注: enet のネットワーク統合の例を確認できます。
librg
は単一ヘッダー ライブラリです。つまり、これを使用するには、このリポジトリのリリース セクションから当該ヘッダー ファイルの最新 (または特定) バージョンを取得し、それをプロジェクトに追加するだけで、メリットを享受できるようになります。 。
あるいは、CLI に慣れている場合は、次のことを実行することもできます。
curl -L https://github.com/zpl-c/librg/releases/latest/download/librg.h > librg.h
# OR
wget https://github.com/zpl-c/librg/releases/latest/download/librg.h -O librg.h
これはネットワーク ライブラリですか?
ネットワーク ライブラリを一緒に使用できますか?
UDP
からWebSocket
/ WebRTC
までの低レベルのものであれば何でも可能です。リポジトリには多数の*.h
および*.c
ファイルが含まれていますが、それが単一ヘッダー ライブラリであると提案されていますが、どのようにしてそれが可能ですか?
librg はエンティティ システムを提供していますか?
データをパックするにはどうすればよいですか。その方法はありますか?
protobuf
、 flatbuffers
、 msgpack
など) を使用するか、独自の実装を作成する必要があります。チャンクについて言及されていますが、私のゲーム/アプリはチャンクベースでなければならないという意味ですか?
ライブラリに関する詳細なドキュメントを読み、例を参照し、クイック スタート ガイドを参照するには、ドキュメント ページにアクセスしてください。
さらに、code/apps フォルダーで実際のコード例を確認できます。
これは、4x4 チャンクの単純な 2D 世界上でライブラリがどのように動作するかを再現しようとする簡単な図です。より大きなサイズの 3D 世界の場合、3 次元内でのみ、すべてが非常に似た方法で機能します。
この図は、データのエンコードとデコードに使用される基礎となるバイナリ プロトコルの構造を示しています。結果として得られるバイナリ バッファは、他のバッファに挿入したり、ファイルとしてディスクに保存したり、利用可能な方法を使用してネットワーク経由で送信したりできます。パケット内のすべてのエンティティと一緒にカスタム データを配置すると、コンテキスト依存のデータ ストレージが可能になり、機能が拡張され、メモリと帯域幅の効率に優れたエンティティのレプリケーションが可能になります。
バージョンv6.0.0
より前のライブラリを使用したことがある場合は、ここにある移行ガイドを読むことをお勧めします。
私たちはさまざまなプラットフォーム向けにライブラリをテストしています。この表は、互換性について何らかの説明を提供します。テストを行った結果が表の結果と異なる場合は、問題点にその問題を遠慮なく記載してください。
プラットフォーム/結果 | 窓 | macOS | Linux | iOS | アンドロイド | ラズベリーパイ | OpenBSD | FreeBSD | エムスクリプト |
---|---|---|---|---|---|---|---|---|---|
❔ | カラン | カラン | gcc、クラン | gcc、クラン | gcc、クラン | ||||
✅ | msvc、ミンウ | gcc、クラン | gcc、クラン | emcc |
新しい機能、最適化、または全体的な改善に貢献したり、追加したりしたい場合は、その方法についての手順を次に示します。
git clone https://github.com/zpl-c/librg.git
make
実行してすべてのプロジェクトをビルドし、すべてが動作することを確認しますcode/tests/
に追加します。make test
再度実行して確認しますWindowsで作業している場合、またはmake
使用できない場合は、組み込みのcmake
構成ファイルを使用して Visual Studio ソリューションを生成することもできます。
mkdir build
cd build
cmake ../misc -G"Visual Studio 16 2019"
(またはお持ちの任意の構成)cmake --open .
(ソリューションを含む VS が開きます)開発者にとっては、次のような素晴らしいメリットがあります。