NBNETは、クライアントサーバーアーキテクチャを実装するように設計された単一のヘッダーC(C99)ライブラリであり、より正確にはオンラインビデオゲームに向けています。図書館は、グレン・フィードラーによるこの素晴らしい一連の記事に基づいています。
NBNETは、「ドライバー」を介してUDPやWeBRTCなどのさまざまなプロトコルをターゲットにできます(詳細については、以下を参照)。
APIは可能な限り簡単にすることを目的としており、イベントのポーリングに依存しているため、ゲームループに簡単に統合できます。
免責事項:NBNETは開発の初期段階にあり、何よりもまず、オンラインゲーム開発を探求する私の学習プロジェクトです。あなたが戦闘テストされた制作に対応するライブラリを探しているなら、これはおそらくそのものではありません。
このビデオでは、NBNETが動作しているのを見ることができます。
ライブラリについて話し合いたい場合、またはヘルプが必要な場合は、NBNETのDiscord Serverに参加してください。
ネイティブのWeBRTCドライバーは次のことに依存しています。
Duncan Stead(@DuncanStead86)によるWebブラウザに実行される楽しいアクションゲーム。
YouTubeを参照してください。
Webブラウザで再生可能なWIPバトルロイヤルゲーム。
YouTubeを参照してください
Ludum Dare 49のために作られたオンラインマルチプレイヤーRTS。
https://ldjam.com/events/ludum-dare/49/llamageddon
少しオンラインタンクゲームのプロトタイプ。
Githubを参照してください
ユーザーが管理するバインディングのリスト(公式にはサポートされていないため、時代遅れである可能性があります):
NBNETは、低レベルの「トランスポート」コードを直接実装せず、ドライバーに依存しています。
ドライバーは、NBNETヘッダーの外側に住み、パケットの送信と受信に使用されるNBNETのトランスポートレイヤー実装を提供する一連の関数定義です。
NBNETには、すぐに使用できる3人のドライバーが付属しています。
ソースファイルの1つでは、次のようにしています。
#define NBNET_IMPL
#include "nbnet.h"
ドライバーの実装を提供します。たとえば、UDPドライバーの場合、追加するだけです。
#include "net_drivers/udp.h"
NBNET_IMPLを定義した同じソースファイルにNBNETヘッダーを含めた後。
NBNETはロギング機能を提供していないため、独自の機能を提供する必要があります。
#define NBN_LogInfo(...) SomeLoggingFunction(__VA_ARGS__)
#define NBN_LogError(...) SomeLoggingFunction(__VA_ARGS__)
#define NBN_LogDebug(...) SomeLoggingFunction(__VA_ARGS__)
#define NBN_LogTrace(...) SomeLoggingFunction(__VA_ARGS__)
#define NBN_LogWarning(...) SomeLoggingFunction(__VA_ARGS__)
メモリ管理のために、NBNETはmalloc 、 realloc 、およびfree使用します。必要に応じて再定義できます。
#define NBN_Allocator malloc
#define NBN_Reallocator realloc
#define NBN_Deallocator free
ここからすべてが設定されて、私はあなたが例に飛び乗ることをお勧めします。 Webrtcに興味がある場合は、こちらにアクセスしてください。
NBNETには、プリミティブビットレベルのシリアル化システムが付属しています。ただし、独自のシリアル化ソリューションを使用したい場合は、NBNETを使用すると、生のバイト配列を送信して受信できます。
echo_bytesの例を参照してください。