بروتوكول DIEP.IO
DIEP.io هي لعبة حرب صغيرة عبر الإنترنت تتميز بالدبابات والرصاص والأنابيب. هناك العديد من أوضاع اللعبة ولكن هذا المستند يركز فقط على وضع FFA.
- تواصل
- أنواع البيانات
- تنسيق الحزمة
- الحزم
- ServerBound
- ClientBount
تواصل
يتم إرسال البيانات من خلال أنبوب WebSocket HTTP.
أنواع البيانات
تستخدم هذه اللعبة تنسيقات البيانات القياسية. البايتات في ترتيب إنديان كبير . قد لا يكون حجم كل نوع ثابتًا (على سبيل المثال ، الأوتار ، varints).
اسم | الحجم (بايت) | نطاق البيانات | ملحوظات |
---|
uint8 | 1 | عدد صحيح بين 0 و 255 | عدد صحيح 8 بت غير موقعة |
uint16 | 2 | عدد صحيح بين 0 و 65535 | عدد صحيح 16 بت غير موقعة |
uint32 | 4 | عدد صحيح بين 0 و 4294967295 | عدد صحيح 32 بت غير موقعة |
int8 | 1 | عدد صحيح بين -128 و 127 | وقع عدد صحيح 8 بت |
int16 | 2 | عدد صحيح بين -32768 و 32767 | وقع عدد صحيح 16 بت |
int32 | 4 | عدد صحيح بين -2147483647 و 2147483646 | وقع عدد صحيح 32 بت |
Float32 | 4 | رقم نقطة عائم | رقم النقطة العائمة بدقة 32 بت |
Float64 | 8 | رقم نقطة عائم | رقم النقطة العائمة بدقة 64 بت |
خيط | ≥ 1 | سلسلة متغيرة طول UTF-8 | تنتهي السلسلة عند الوصول إلى البايت 0x00 |
ر [أنا] | ؟ | صفيف حجم ثابت من النوع | يمكن أن تحتوي المصفوفات على أي نوع من البيانات |
تنسيق الحزمة
تبدأ كل حزمة ببايت واحد يشير إلى معرف الحزمة ثم يتبع المحتوى . يمكن تقسيم الحزم إذا كانت كبيرة جدًا ولكن يتم تصحيح هذا السلوك تلقائيًا بواسطة مدير المخزن المؤقت.
يكتب | الحجم (بايت) | ملحوظات |
---|
معرف الحزمة | 1 | يمكن أن يكون هناك 256 حزمة مختلفة ، ولكن في الممارسة العملية لا يوجد سوى عدد قليل. إرسال معرف حزمة غير معروف سيغلق الاتصال على الفور. |
محتوى | ≥ 0 | يمكن أن تحتوي الحزم على جسم فارغ |
الحزم
قد تكون بعض الحزم مفقودة ولم يتم اكتشاف أغراضها تمامًا.
ServerBound
الحزم المرسلة من العميل إلى الخادم.
خلاصة
معرف الحزمة | الاسم التعسفي | غاية |
---|
0x00 | معرف المستخدم | يتم إرسالها في بداية الاتصال ، ويحتوي على معرف اللاعب. |
0x01 | السيطرة على اللاعب | يحتوي على موقع الماوس ، إذا كان اللاعب يطلق النار وحالة مفاتيح الاتجاه الأربع |
0x02 | ابدأ اللعبة | يحتوي على اللقب الذي أدخله اللاعب |
0x03 | ترقية الخزان | يخبر الخادم الذي يريد ترقية المشغل الاختيار |
0x04 | تطور الخزان | يخبر الخادم الذي يريده اللاعب |
0x05 | نبض القلب | يتحقق الخادم إذا كان المشغل لا يزال متصلاً بالإنترنت. يتم إرسال هذه الحزمة كل 0.1 ثانية. |
0x00
معرف المستخدم
مجال | يكتب | ملحوظات |
---|
معرف المستخدم | خيط | لم يحدد الطول القصوى |
0x01
لاعب التحكم
مجال | يكتب | ملحوظات |
---|
؟؟؟ | 8 إلى 10 بايت | موقع الماوس (؟) |
مفاتيح | uint8 | حالة (مضغوطة أو إصدار) من 5 مفاتيح مشفرة في أجزاء |
يمكن العثور على رموز لكل مفتاح في الجدول التالي. تتم إضافة كل حالة مفتاح إلى المكدس باستخدام مشغل المنطق أو (= |).
مفتاح | الكود (بايت) | الكود (ثنائي) |
---|
الزر الأيسر الماوس | 0x01 | 0b00000001 |
السهم | 0x02 | 0b00000010 |
يسار السهم | 0x04 | 0b00000100 |
السهم لأسفل | 0x08 | 0b00001000 |
حق السهم | 0x10 | 0b00010000 |
0x02
ابدأ اللعبة
مجال | يكتب | ملحوظات |
---|
كنية | خيط | يجب أن يتراوح طول الأسماء بين 0 و 15 حرفًا |
0x03
ترقية الخزان
مجال | يكتب | ملحوظات |
---|
ترقية معرف | uint8 | مستوى الترقية لا يهم |
يمكن العثور على معرفات الترقيات في الجدول التالي.
يرقي | الكود (بايت) |
---|
تجديد الصحة | 0x0e |
أقصى صحة | 0x0c |
تلف الجسم | 0x0a |
سرعة رصاصة | 0x08 |
اختراق الرصاص | 0x06 |
تلف الرصاص | 0x04 |
إعادة تحميل | 0x02 |
سرعة الحركة | 0x00 |
0x04
Evolution Tank
مجال | يكتب | ملحوظات |
---|
معرف الخزان | uint8 | كل خزان له بطاقة هويته الخاصة |
معرفات الدبابات هي كما يتبع.
طبقة | المستويات المطلوبة |
---|
0 | 0 |
1 | 15 |
2 | 30 |
3 | 45 |
طبقة | اسم الخزان | يمكن الحصول عليها بعد | Code (byte) |
---|
1 | التوأم | طبيعي | 0x02 |
1 | Flank Guard | طبيعي | 0x10 |
1 | Machine Gun | طبيعي | 0x0e |
1 | قناص | طبيعي | 0x0c |
2 | Triple Shot | التوأم | 0x06 |
2 | Twin Flank | حارس التوأم أو الجناح | 0x1a |
2 | خزان رباعي | حارس التوأم أو الجناح | 0x08 |
2 | Tri Angle | حارس الجناح | 0x12 |
2 | مدمرة | مدفع رشاش | 0x14 |
2 | مدفعي | مدفع رشاش | 0x28 |
2 | قاتل | قناص | 0x1e |
2 | المشرف | قناص | 0x16 |
2 | هنتر | قناص | 0x26 |
3 | ثلاثي | طلقة ثلاثية | 0x04 |
3 | طلقة بنتا | طلقة ثلاثية | 0x1c |
3 | توأم ثلاثي | جناح توأم | 0x24 |
3 | Octo Tank | جناح توأم أو خزان رباعي | 0x0a |
3 | الداعم | Tri Angle | 0x2e |
3 | مقاتل | Tri Angle | 0x30 |
3 | هجين | مدمرة | 0x32 |
3 | مترصد | قاتل | 0x2a |
3 | الحارس | قاتل | 0x2c |
3 | مدير | المشرف | 0x34 |
3 | أفرلورد | المشرف | 0x18 |
3 | مستحضر الأرواح | المشرف | 0x22 |
0x05
نبضات القلب
هذه الحزمة فارغة.
ClientBound
الحزم المرسلة من الخادم إلى العميل.
خلاصة
معرف الحزمة | الاسم التعسفي | غاية |
---|
0x00 | ؟؟؟ | ؟؟؟ |
0x02 | ؟؟؟ | يحتوي في بعض الأحيان على بيانات المتجر واللوحة المتصدرين (؟) |
0x04 | موقع الخادم | يخبر العميل موقعه |
0x05 | نبض القلب | يتحقق العميل ما إذا كان الخادم لا يزال متصلاً بالإنترنت. This packet is sent every 0.1 second. |
0x00
؟؟؟
مجال | يكتب | ملحوظات |
---|
عداد | uint8 | التهم من 128 إلى 255 (؟) |
؟؟؟ | ؟؟؟ | ؟؟؟ |
0x02
؟؟؟
مجال | يكتب | ملحوظات |
---|
؟؟؟ | ؟؟؟ | ؟؟؟ |
ألقاب | سلسلة [10] | 10 أفضل لاعبين على الخادم |
؟؟؟ | ؟؟؟ | ؟؟؟ |
الدرجات | Float32 [10] | ونتيجةهم |
؟؟؟ | ؟؟؟ | ؟؟؟ |
0x04
موقع الخادم
مجال | يكتب | ملحوظات |
---|
اسم الموقع | خيط | يحتوي على معلومات حول موقع الخادم |
0x05
نبضات القلب
هذه الحزمة فارغة.