Dasp.io Protokoll
diep.io ist ein kleines Online -Kriegsspiel mit Tanks, Kugeln und Blobs. Es gibt mehrere Spielmodi, aber dieses Dokument konzentriert sich nur auf den FFA -Modus.
- Kommunikation
- Datentypen
- Paketformat
- Pakete
- Serverbound
- Clientbount
Kommunikation
Die Daten werden über ein HTTP -Websocket -Rohr übertragen.
Datentypen
Dieses Spiel verwendet Standarddatenformate. Bytes sind in großer endianischer Reihenfolge. Die Größe jedes Typs ist möglicherweise nicht konstant (z. B. Zeichenfolgen, Varints).
Name | Größe (Bytes) | Datenbereich | Notizen |
---|
Uint8 | 1 | Eine Ganzzahl zwischen 0 und 255 | Unsigned 8-Bit Ganzzahl |
Uint16 | 2 | Eine Ganzzahl zwischen 0 und 65535 | Nicht signiert 16-Bit-Ganzzahl |
Uint32 | 4 | Eine Ganzzahl zwischen 0 und 4294967295 | Unsigned 32-Bit Ganzzahl |
int8 | 1 | Eine Ganzzahl zwischen -128 und 127 | Signierte 8-Bit-Ganzzahl |
int16 | 2 | Eine Ganzzahl zwischen -32768 und 32767 | Signiert 16-Bit-Ganzzahl |
INT32 | 4 | Eine Ganzzahl zwischen -2147483647 und 2147483646 | Signiert 32-Bit-Ganzzahl |
float32 | 4 | Eine schwebende Punktzahl | Schwimmende Punktzahl mit 32-Bit-Präzision |
float64 | 8 | Eine schwebende Punktzahl | Schwimmende Punktzahl mit 64-Bit-Präzision |
Saite | ≥ 1 | Eine UTF-8-Zeichenfolge mit variabler Länge | Die Zeichenfolge endet, wenn Byte 0x00 erreicht ist |
T [i] | ? | Ein Array der festen Größe eines Typs | Arrays können jede Art von Daten enthalten |
Paketformat
Jedes Paket beginnt mit einem Byte, das die Paket -ID angibt, und dann folgt der Inhalt . Pakete können aufgeteilt werden, wenn sie zu groß sind, dieses Verhalten wird jedoch vom Puffer -Manager automatisch korrigiert.
Typ | Größe (Bytes) | Notizen |
---|
Paket -ID | 1 | Es kann 256 verschiedene Pakete geben, aber in der Praxis gibt es nur wenige. Durch das Senden einer unbekannten Paket -ID wird die Verbindung sofort geschlossen. |
Inhalt | ≥ 0 | Pakete können einen leeren Körper haben |
Pakete
Einige Pakete fehlen möglicherweise und ihre Zwecke wurden nicht vollständig entdeckt.
Serverbound
Pakete vom Client an den Server gesendet.
Rekapitulieren
Paket -ID | Willkürlicher Name | Zweck |
---|
0x00 | Benutzer-ID | Zu Beginn der Verbindung gesendet, enthält die ID des Spielers. |
0x01 | Spielerkontrolle | Enthält den Ort der Maus, wenn der Spieler schießt und der Zustand der 4-Richtungschlüssel |
0x02 | Spiel starten | Enthält den Spitznamen, der vom Spieler eingegeben wurde |
0x03 | Tank -Upgrade | Teilt dem Server mit, der den Player upgrade auswählen möchte |
0x04 | Panzerentwicklung | Teilt dem Server mit, welche Evolution der Spieler wählen möchte |
0x05 | Herzschlag | Der Server überprüft, ob der Spieler noch online ist. Dieses Paket wird alle 0,1 Sekunden gesendet. |
0x00
Benutzer -ID
Feld | Typ | Notizen |
---|
Benutzer-ID | Saite | Keine maximale Länge angegeben |
0x01
Spielerkontrolle
Feld | Typ | Notizen |
---|
??? | 8 bis 10 Bytes | Mausort (?) |
Schlüssel | Uint8 | Zustand (gedrückt oder freigegeben) von 5 in Bits codierten Schlüssel |
Codes für jeden Schlüssel finden Sie in der folgenden Tabelle. Jeder Schlüsselzustand wird mit dem Logik oder (= |) Operator zum Stapel hinzugefügt.
Schlüssel | Code (Byte) | Code (binär) |
---|
Maus linker Taste | 0x01 | 0b00000001 |
Pfeil hoch | 0x02 | 0b00000010 |
Pfeil links | 0x04 | 0b00000100 |
Pfeil nach unten | 0x08 | 0b00001000 |
Pfeil richtig | 0x10 | 0b00010000 |
0x02
Startspiel
Feld | Typ | Notizen |
---|
Spitzname | Saite | Spitznamen müssen zwischen 0 und 15 Zeichen lang sein |
0x03
Tank -Upgrade
Feld | Typ | Notizen |
---|
Upgrade -ID | Uint8 | Die Upgrade -Ebene spielt keine Rolle |
Upgrades -IDs finden Sie in der folgenden Tabelle.
Upgrade | Code (Byte) |
---|
Gesundheitsregeneration | 0x0e |
Maximale Gesundheit | 0x0c |
Körperschäden | 0x0a |
Kugelgeschwindigkeit | 0x08 |
Bullet -Penetration | 0x06 |
Schadensschaden | 0x04 |
Neu laden | 0x02 |
Bewegungsgeschwindigkeit | 0x00 |
0x04
Tankentwicklung
Feld | Typ | Notizen |
---|
Panzer -ID | Uint8 | Jeder Tank hat einen eigenen Ausweis |
Panzer -IDs sind wie folgt.
Stufe | Ebenen erforderlich |
---|
0 | 0 |
1 | 15 |
2 | 30 |
3 | 45 |
Stufe | Tankname | Nachdem erhältlich | Code (Byte) |
---|
1 | Zwilling | Normal | 0x02 |
1 | Flankenwache | Normal | 0x10 |
1 | Maschinengewehr | Normal | 0x0e |
1 | Scharfschütze | Normal | 0x0c |
2 | Triple Shot | Zwilling | 0x06 |
2 | Zwillingsflanke | Twin- oder Flank -Wache | 0x1a |
2 | Quad -Panzer | Twin- oder Flank -Wache | 0x08 |
2 | Tri Winkel | Flankenwache | 0x12 |
2 | Zerstörer | Maschinengewehr | 0x14 |
2 | Kanonier | Maschinengewehr | 0x28 |
2 | Attentäter | Scharfschütze | 0x1e |
2 | Aufseher | Scharfschütze | 0x16 |
2 | Jäger | Scharfschütze | 0x26 |
3 | Triplet | Triple Shot | 0x04 |
3 | Penta schoss | Triple Shot | 0x1c |
3 | Triple Twin | Zwillingsflanke | 0x24 |
3 | Oktobertank | Twin Flank oder Quad Tank | 0x0a |
3 | Booster | Tri Winkel | 0x2e |
3 | Kämpfer | Tri Winkel | 0x30 |
3 | Hybrid | Zerstörer | 0x32 |
3 | Stalker | Attentäter | 0x2a |
3 | Ranger | Attentäter | 0x2c |
3 | Manager | Aufseher | 0x34 |
3 | Overlord | Aufseher | 0x18 |
3 | Nekromant | Aufseher | 0x22 |
0x05
Herzschlag
Dieses Paket ist leer.
Kundengebunden
Pakete, die vom Server an den Client gesendet werden.
Rekapitulieren
Paket -ID | Willkürlicher Name | Zweck |
---|
0x00 | ??? | ??? |
0x02 | ??? | Enthält manchmal die Shop -Daten und die Rangliste (?) |
0x04 | Serverstandort | Teilt dem Kunden seinen Standort mit |
0x05 | Herzschlag | Der Client prüft, ob der Server noch online ist. Dieses Paket wird alle 0,1 Sekunden gesendet. |
0x00
???
Feld | Typ | Notizen |
---|
Schalter | Uint8 | Zählt von 128 bis 255 (?) |
??? | ??? | ??? |
0x02
???
Feld | Typ | Notizen |
---|
??? | ??? | ??? |
Spitznamen | String [10] | 10 beste Spieler auf dem Server |
??? | ??? | ??? |
Punktzahlen | Float32 [10] | Und ihre Punktzahl |
??? | ??? | ??? |
0x04
Serverort
Feld | Typ | Notizen |
---|
Standortname | Saite | Enthält Informationen über den Standort des Servers |
0x05
Herzschlag
Dieses Paket ist leer.