NBNET هي مكتبة رأس واحدة (C99) مصممة لتنفيذ بنية خادم العميل ، على وجه التحديد لألعاب الفيديو عبر الإنترنت. تعتمد المكتبة على هذه السلسلة الرائعة من المقالات التي كتبها جلين فيدلر.
يمكن لـ NBNET استهداف بروتوكولات مختلفة مثل UDP أو WEBRTC من خلال "برامج التشغيل" (انظر أدناه لمزيد من المعلومات).
من المفترض أن تكون واجهة برمجة التطبيقات (API) واضحة قدر الإمكان ، وتعتمد على استطلاع الأحداث ، مما يجعل من السهل الاندماج في حلقة اللعبة.
إخلاء المسئولية : NBNET في المراحل المبكرة من تطورها وهي ، أولاً وقبل كل شيء ، مشروع تعليمي لي أثناء استكشاف تطوير الألعاب عبر الإنترنت. إذا كنت تبحث عن مكتبة جاهزة للمعركة ، فهذا ربما لا تكون هذه هي المكتبة.
يمكنك رؤية nbnet في العمل في هذا الفيديو.
إذا كنت ترغب في مناقشة المكتبة أو تحتاج إلى مساعدة ، انضم إلى خادم Discord NBNET.
يعتمد برنامج تشغيل WEBRTC الأصلي على:
لعبة الحركة الممتعة التي تدخل في متصفح ويب ، بقلم Duncan Stead (@duncanstead86).
انظر على يوتيوب.
لعبة WIP Battle Royal قابلة للعب في متصفح الويب.
انظر على يوتيوب
RTs متعددة اللاعبين عبر الإنترنت صنعت ل ludum Dare 49.
https://ldjam.com/events/ludum-dare/49/llamageddon
القليل من النموذج الأولي للدبابات على الإنترنت.
انظر على جيثب
قائمة بالروابط التي يتم توزيعها للمستخدم (لا يتم دعمها رسميًا ، لذلك قد تكون قديمة):
لا تنفذ 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.