netcode は、 UDP 上に構築された安全なクライアント/サーバー プロトコルです。
これは、接続指向プロトコルを必要とするが、TCP の行頭ブロックを必要としないリアルタイム マルチプレイヤー ゲームでの使用を目的としています。
ネットコードには次の機能があります。
ネットコードは安定しており、本番環境に対応しています。
まず、ランダムな 32 バイトの秘密キーを生成します。秘密キーを誰とも共有しないでください。
特に、クライアントの実行可能ファイルに秘密キーを含めないでください。
テスト用の秘密鍵は次のとおりです。
static uint8_t private_key [ NETCODE_KEY_BYTES ] = { 0x60 , 0x6a , 0xbe , 0x6e , 0xc9 , 0x19 , 0x10 , 0xea ,
0x9a , 0x65 , 0x62 , 0xf6 , 0x6f , 0x2b , 0x30 , 0xe4 ,
0x43 , 0x71 , 0xd6 , 0x2c , 0xd1 , 0x99 , 0x27 , 0x26 ,
0x6b , 0x3c , 0x60 , 0xf4 , 0xb7 , 0x15 , 0xab , 0xa1 };
秘密キーを使用してサーバーを作成します。
char * server_address = "127.0.0.1:40000" ;
struct netcode_server_config_t server_config ;
netcode_default_server_config ( & server_config );
memcpy ( & server_config . private_key , private_key , NETCODE_KEY_BYTES );
struct netcode_server_t * server = netcode_server_create ( server_address , & server_config , time );
if ( ! server )
{
printf ( "error: failed to create servern" );
return 1 ;
}
次に、必要なクライアント スロットの数を指定してサーバーを起動します。
netcode_server_start ( server , 16 );
クライアントに接続するには、クライアントは接続トークンを返すバックエンドへの REST API をヒットする必要があります。
接続トークンを使用するとサーバーが保護され、バックエンドで承認されたクライアントのみが接続できるようになります。
netcode_client_connect ( client , connect_token );
クライアントがサーバーに接続すると、クライアントにはクライアント インデックスが割り当てられ、暗号化および署名されたパケットをサーバーと交換できるようになります。
詳細については、client.c およびserver.c を参照してください。
このリポジトリには、C でのネットコードの実装が保持されます。
他のネットコード実装には次のものがあります。
独自のネットコード実装を作成したい場合は、ネットコード 1.02 標準を読んでください。
これらの人々は素晴らしいです:
ネットコードへの貢献に感謝します!
このライブラリの著者は Glenn Fiedler です。
同じ作者による他のオープン ソース ライブラリには、reliable、serialize、yojimbo などがあります。
このソフトウェアが役立つと思われる場合は、スポンサーになることをご検討ください。ありがとう!
BSD 3 条項ライセンス。