Moderasyon
Susturma, odadan atma, yasaklama, şifreler ve katılım doğrulamasıyla odayı keyifli tutun.
Susturma
setPlayerMuted(), siz susturmayı kaldırana veya oyuncu ayrılana kadar oyuncunun oda sohbetini, özel mesajlarını ve yazıyor göstergesini susturur.
Odadan atma ve yasaklama
kickPlayer(id, reason, ban), bir oyuncuyu çıkarır ve ona nedeni gösterir. ban: true ile servis, odanın kalan yaşamı boyunca oyuncuyu da reddeder. Bir oda en fazla 256 yasaklama tutabilir; bunları clearBan() veya clearBans() ile kaldırın.
const offensive = /\b(idiot|loser)\b/i;
const strikes = new Map();
room.onPlayerChat = (player, text) => {
if (!offensive.test(text)) return;
const count = (strikes.get(player.id) ?? 0) + 1;
strikes.set(player.id, count);
if (count >= 3)
void room.kickPlayer(player.id, 'Repeated abuse', true);
return false;
};Yasaklamalar Ball2D servisi tarafından uygulanır. Servis bir yasaklamayı onaylayamazsa komut reddedilir ve oyuncu kalır, bu nedenle reddedilmeyi ele alın.
Özel odalar
Bir şifre, odayı yalnızca davet ettiğiniz kişilerle sınırlar. Oluşturma sırasında veya sonrasında setPassword() ile bir şifre belirleyin; odayı yeniden açmak için null geçirin. Odayı listenin dışında tutmak için public'i kapalı bırakın; oda bağlantıyla erişilebilir kalır.
Katılım doğrulaması
setRequireVerification(true), katılan her oyuncudan önce bir insan doğrulama testini geçmesini ister. Odada zaten bulunan oyuncuları etkilemeden otomatik katılımları yavaşlatır.
Sorunları izleyin
Yöneticilerin oyun içinden yaptıklarını kaydetmek için onPlayerKicked'i, boşta kalan oyuncuları bulmak için onPlayerActivity'yi ele alın:
const lastSeen = new Map();
room.onPlayerActivity = (p) => lastSeen.set(p.id, Date.now());
room.onPlayerJoin = (p) => lastSeen.set(p.id, Date.now());
// Move players idle for a minute to the spectators.
const timer = setInterval(() => {
for (const player of room.getPlayerList()) {
if (
player.team !== 0 &&
Date.now() - (lastSeen.get(player.id) ?? 0) > 60_000
)
void room.setPlayerTeam(player.id, 0);
}
}, 10_000);
room.signal.addEventListener('abort', () =>
clearInterval(timer),
);