Referenz

Fehler und Fehlerbehebung

Häufige Symptome, Ursachen und wie man sie behebt.

Spieler können sich in der Partie nicht bewegen

Symptom: Die Partie startet, aber die Scheiben bleiben am Spawn stehen (hell und ohne Namen).

Häufige Ursache: Der Raum ist gesperrt (lockTeams()) und der Partiestart wurde mit gs.tl = false gesendet.

Lösung: Nutze Version 0.1.4 oder neuer, die gs.tl entsprechend dem tatsächlichen Sperrzustand sendet. Wenn du TRIGGER_START von Hand baust, setze gs.tl auf den Wert von room.state.teamsLocked.

Ein Spieler, der während der Partie beitritt, hängt in der Lobby fest

Ursache: Der Host hat INFORM_IN_LOBBY und danach INFORM_IN_GAME gesendet (oder umgekehrt). Der Client akzeptiert nur ein Paket mit Anfangsdaten.

Lösung: Seit 0.1.2 sendet die Bibliothek nur INFORM_IN_GAME, wenn eine mit startGame({ is }) gestartete Partie aktiv ist. Startest du Partien auf anderem Weg, übergib das is, damit der Raum weiß, dass eine Partie läuft.

Die Partie startet, aber die Spieler erscheinen nicht auf dem Feld

Ursache: Der IS-Blob ist leer oder passt nicht zur Karte bzw. zur Spielerzahl.

Lösung: Zeichne für jede Kombination einen Blob auf (siehe Partien, IS-Blob und Zuschauer) und nutze ein explizites bal.

rate_limit_tl, rate_limit_cot und andere

Ursache: Zu viele Befehle in kurzer Zeit. Der Server lehnt ab und warnt mit einer status-message.

Lösung: Verteile die Aufrufe zeitlich. Ein wiederholtes lockTeams() sendet bereits nur einmal und versucht es bei Ablehnung selbst erneut.

Ursache: In Versionen vor 0.1.3 kamen Raum-IDs mit weniger als 6 Ziffern ohne führende Nullen an (zum Beispiel 6813vnxpi statt 006813vnxpi).

Lösung: Aktualisiere die Bibliothek; room.shareLink kommt jetzt vollständig an.

RoomCreationTimeoutError oder RoomJoinTimeoutError

Der Server hat nicht rechtzeitig geantwortet (Standard: 10 s). Prüfe Netzwerk und Zugangsdaten und versuche es erneut. Erhöhe timeoutMs in langsamen Netzwerken.

room-dead mit status-room_full

War der Bot noch nicht im Raum, bedeutet es, dass der Raum voll ist (endgültig). War er bereits drin, zeigt die Meldung nur an, dass ein anderer Spieler abgelehnt wurde.

TypeScript-Fehler aus node_modules/bonktools

Wenn du mit skipLibCheck: false kompilierst, kann die index.d.ts des Pakets Fehler zu socket.io-client und eventemitter3 zeigen. Lass skipLibCheck: true (der Standard von tsc --init); damit funktionieren die Typen vollständig.

Anti-AFK markiert alle

Die Bewegung kommt aus den Input-Frames über WebRTC. Sind die Tabs der Spieler im Hintergrund oder hat WebRTC nicht verbunden, kommt kein Frame an. Siehe die Einschränkungen von Anti-AFK und prüfe, ob peer-input emittiert wird.

Häufige Fragen

Brauche ich ein bonk.io-Konto? Für das Hosten von 24/7-Räumen ja: Nutze ein registriertes Konto.

Auf welchen Systemen läuft es? Es ist Node.js (20.18.1 oder neuer), ohne Browser und ohne native Spiel-Abhängigkeiten. Entwicklung und Tests fanden unter Windows statt.

Kann ich mehrere Räume betreiben? Ja, mit BonkSession. Ein einziges Konto kann mehrere Räume halten, unter Beachtung des Throttle.

Ist es offiziell? Nein. Es ist ein unabhängiges Projekt ohne Verbindung zu bonk.io.

Wo melde ich ein Problem? Eröffne ein Issue im Repository der Bibliothek.