NBNET เป็นห้องสมุดส่วนหัวเดียว C (C99) ที่ออกแบบมาเพื่อใช้สถาปัตยกรรมไคลเอนต์-เซิร์ฟเวอร์ซึ่งแม่นยำยิ่งขึ้นสำหรับวิดีโอเกมออนไลน์ ห้องสมุดตั้งอยู่บนพื้นฐานของบทความที่ยอดเยี่ยมนี้โดย Glenn Fiedler
NBNET สามารถกำหนดเป้าหมายโปรโตคอลที่แตกต่างกันเช่น UDP หรือ WEBRTC ผ่าน "ไดรเวอร์" (ดูข้อมูลเพิ่มเติมด้านล่าง)
API นั้นมีความหมายตรงไปตรงมาที่สุดเท่าที่จะเป็นไปได้และอาศัยการสำรวจเหตุการณ์ทำให้ง่ายต่อการรวมเข้ากับวงเกม
ข้อจำกัดความรับผิดชอบ : NBNET อยู่ในช่วงเริ่มต้นของการพัฒนาและเป็นโครงการการเรียนรู้ของฉันเป็นอันดับแรกและสำคัญที่สุดในขณะที่ฉันสำรวจการพัฒนาเกมออนไลน์ หากคุณกำลังมองหาห้องสมุดที่ผ่านการทดสอบการต่อสู้พร้อมการผลิตนี่อาจไม่ใช่ห้องสมุด
คุณสามารถดู NBNET ได้ในวิดีโอนี้
หากคุณต้องการหารือเกี่ยวกับไลบรารีหรือต้องการความช่วยเหลือให้เข้าร่วมเซิร์ฟเวอร์ Discord ของ NBNET
ไดรเวอร์ WebRTC ดั้งเดิมอาศัย:
เกมแอ็คชั่นที่สนุกสนานที่วิ่งเข้าไปในเว็บเบราว์เซอร์โดย Duncan Stead (@Duncanstead86)
ดูบน YouTube
เกม RIP Battle Royal เล่นได้ในเว็บเบราว์เซอร์
ดูบน YouTube
RTs ผู้เล่นหลายคนออนไลน์ที่สร้างขึ้นสำหรับ Ludum Dare 49
https://ldjam.com/events/ludum-dare/49/llamageddon
ต้นแบบเกมรถถังออนไลน์เล็กน้อย
ดูที่ GitHub
รายการของการเชื่อมโยงผู้ใช้ที่มีการเชื่อมโยง (พวกเขาไม่ได้รับการสนับสนุนอย่างเป็นทางการดังนั้นพวกเขาอาจล้าสมัย):
NBNET ไม่ได้ใช้รหัส "การขนส่ง" ระดับต่ำโดยตรงและอาศัย ไดรเวอร์
ไดรเวอร์คือชุดของคำจำกัดความของฟังก์ชั่นที่อาศัยอยู่นอกส่วนหัวของ NBNET และให้การใช้งานเลเยอร์การขนส่งสำหรับ NBNET ที่ใช้ในการส่งและรับแพ็คเก็ต
NBNET มาพร้อมกับไดรเวอร์ที่พร้อมใช้งานสามตัว:
ใน หนึ่ง ในไฟล์ต้นฉบับของคุณทำ:
#define NBNET_IMPL
#include "nbnet.h"
ให้การใช้งานไดรเวอร์ ตัวอย่างเช่นสำหรับไดรเวอร์ UDP เพียงเพิ่ม:
#include "net_drivers/udp.h"
หลังจากรวมส่วนหัว NBNET ในไฟล์ต้นฉบับเดียวกันที่คุณกำหนด NBNET_IMPL
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