librg是一個輕量級程式庫,可作為資料傳輸庫(網路、檔案流等)和核心應用程式/遊戲邏輯之間的中間件。
圖書館的主要職責包括:
該庫的誕生是為了解決設定和管理多人遊戲和專用遊戲伺服器流程的複雜性。它在剝離非必要的東西方面取得了很大的進展,慢慢地塑造成現在的形式,您今天就可以看到和使用。
通常,網路遊戲世界由一組網路玩家和一堆網路實體組成。在實體和玩家之間建立同步關係的典型變體是建立Everything-to-Everyone連線。
這是要遵循的最基本的設定。然而,隨著實體數量的增加,頻寬效率變得相當低。
使用 librg,您可以透過建立基於半徑和可見性的實體關係來顯著減少頻寬使用。實體將僅與它們可見的玩家同步。
圖書館的整體介面是考慮到大多數網路圖書館的支持而設計的。
網路庫必須支援:
char *
緩衝區差不多就是這樣了!
支援哪些類型的庫的列表:
ENet
GameNetworkingSockets
yojimbo
SLikeNet
KCP
Raknet
Websocket
WebRTC
UDP
或TCP
函式庫注意:您可以查看 enet 的網路整合範例。
librg
是一個單頭庫,這意味著要使用它,您只需從該儲存庫的releases部分獲取所述頭文件的最新(或特定)版本,將其添加到您的專案中,然後開始享受它的好處。
或者,如果您對 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
版本之前使用過該程式庫,建議閱讀此處的遷移指南。
我們正在針對各種平台測試該程式庫。該表提供了某種相容性描述。如果您測試過,結果與表中的結果不同,請在issues中描述問題。
平台/結果 | 視窗 | macOS | Linux | iOS系統 | 安卓 | 樹莓派 | 開放BSD | 自由BSD | 艾姆腳本 |
---|---|---|---|---|---|---|---|---|---|
❔ | 鐺 | 鐺 | 海灣合作委員會,鏗鏘 | 海灣合作委員會,鏗鏘 | 海灣合作委員會,鏗鏘 | ||||
✅ | 微軟、明威 | 海灣合作委員會,鏗鏘 | 海灣合作委員會,鏗鏘 | 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)對於開發人員來說,它提供了很好的好處: