librg adalah perpustakaan ringan yang berfungsi sebagai middleware antara perpustakaan transfer data (jaringan, streaming file, dll.) dan logika aplikasi/game inti.
Tanggung jawab utama perpustakaan meliputi:
Perpustakaan ini lahir untuk mengatasi kerumitan pengaturan dan pengelolaan aliran game multi-pemain dan server game khusus. Ini merupakan perjalanan panjang dalam menghilangkan hal-hal yang tidak penting, perlahan-lahan membentuknya menjadi bentuknya yang sekarang, yang dapat Anda lihat dan gunakan saat ini.
Biasanya, dunia game berjaringan terdiri dari sekumpulan pemain yang berjaringan dan sekelompok entitas yang berjaringan. Varian umum dari pengaturan hubungan sinkronisasi antara entitas dan pemain adalah dengan mengatur koneksi Segalanya ke Semua Orang.
Ini adalah pengaturan paling dasar yang harus diikuti. Namun, dengan bertambahnya jumlah entitas, bandwidth menjadi tidak efisien.
Dengan librg, Anda dapat mengurangi penggunaan bandwidth secara signifikan dengan membangun relasi entitas berbasis radius & visibilitas. Entitas hanya akan disinkronkan dengan pemain yang dapat melihatnya.
Antarmuka keseluruhan perpustakaan dibuat dengan mempertimbangkan dukungan sebagian besar perpustakaan jaringan.
Perpustakaan jaringan harus mendukung:
char *
Dan itu cukup banyak!
Daftar jenis perpustakaan apa yang didukung:
ENet
GameNetworkingSockets
yojimbo
SLikeNet
KCP
Raknet
Websocket
WebRTC
UDP
atau TCP
lainnyaCatatan: Anda dapat memeriksa contoh integrasi jaringan untuk enet.
librg
adalah perpustakaan header tunggal, yang berarti untuk menggunakannya, Anda hanya perlu mendapatkan versi terbaru (atau spesifik) dari file header tersebut dari bagian rilis repositori ini, menambahkannya ke proyek Anda, dan mulai menikmati manfaatnya .
Alternatifnya, jika Anda merasa nyaman dengan CLI Anda, Anda dapat melakukan hal berikut;
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
Apakah ini perpustakaan jaringan?
Bisakah saya menggunakan perpustakaan jaringan apa pun dengannya?
UDP
murni, dan hingga WebSocket
/ WebRTC
. Repositori berisi banyak file *.h
dan *.c
, namun Anda menyarankan itu adalah perpustakaan header tunggal, bagaimana mungkin?
Apakah librg menawarkan sistem entitas?
Bagaimana cara mengemas data, apakah Anda menyediakan metode untuk itu?
protobuf
, flatbuffers
, msgpack
, dll.), atau membuat implementasi Anda sendiri.Saya melihat Anda menyebutkan potongan, apakah ini berarti game/aplikasi saya harus berbasis potongan?
Untuk membaca dokumentasi terperinci tentang perpustakaan, melihat contoh, dan panduan memulai cepat, silakan kunjungi halaman dokumentasi kami.
Selain itu, Anda dapat memeriksa folder kode/aplikasi untuk contoh kode sebenarnya.
Berikut adalah ilustrasi sederhana yang mencoba meniru cara kerja perpustakaan pada dunia 2D sederhana yang terdiri dari potongan 4x4. Untuk dunia 3D berukuran lebih besar, semuanya akan bekerja dengan cara yang sangat mirip, hanya dalam 3 dimensi.
Dan gambar ini menunjukkan struktur protokol biner dasar yang digunakan untuk menyandikan dan mendekode data dari/ke. Buffer biner yang dihasilkan dapat dimasukkan ke buffer lain, disimpan ke disk sebagai file, atau dikirim melalui jaringan menggunakan metode apa pun yang tersedia. Menempatkan data khusus di samping setiap entitas dalam paket memungkinkan penyimpanan data yang bergantung pada konteks yang memperluas kemampuan dan memungkinkan replikasi entitas yang hemat memori dan bandwidth.
Jika Anda telah menggunakan perpustakaan sebelum versi v6.0.0
, disarankan untuk membaca panduan migrasi yang terdapat di sini.
Kami sedang menguji perpustakaan untuk berbagai platform. Tabel ini memberikan semacam deskripsi kompatibilitas. Jika Anda telah mengujinya, dan hasil Anda berbeda dengan tabel, silakan jelaskan masalahnya dalam terbitan tersebut.
Platform / Hasil | jendela | macOS | Linux | iOS | Android | Raspberry Pi | OpenBSD | FreeBSD | Ditulis |
---|---|---|---|---|---|---|---|---|---|
❔ | dentang | dentang | gcc, dentang | gcc, dentang | gcc, dentang | ||||
✅ | msvc, mingw | gcc, dentang | gcc, dentang | dll |
Jika Anda ingin berkontribusi, menambahkan fitur baru, pengoptimalan, atau peningkatan secara keseluruhan, berikut petunjuk cara melakukannya:
git clone https://github.com/zpl-c/librg.git
make
untuk membangun semua proyek dan verifikasi semuanya berfungsicode/tests/
make test
lagi untuk memeriksa Jika Anda bekerja dari Windows , dan/atau tidak dapat menggunakan make
, Anda juga dapat menggunakan file konfigurasi cmake
bawaan untuk menghasilkan solusi Visual Studio, untuk melakukannya:
mkdir build
cd build
cmake ../misc -G"Visual Studio 16 2019"
(atau konfigurasi apa pun yang Anda miliki)cmake --open .
(membuka VS dengan solusinya)Bagi pengembang, ini menawarkan manfaat bagus: