Caso de uso

Moderação com IA do chat de jogos, em todos os idiomas dos seus jogadores

Os jogos online juntam no mesmo lobby jogadores de muitos países, e a provocação pode virar assédio em segundos. A VigiMod verifica cada mensagem no seu servidor de jogo, lendo as anteriores, em 26 idiomas, com regras escritas para o seu jogo.

O que torna difícil

Provocação ou assédio?

«GG, fácil demais» depois de uma partida é normal; o mesmo jogador a atacar alguém pelo que é, não. O contexto e as categorias separadas fazem a diferença.

Lobbies globais

Uma partida pode misturar espanhol, português, alemão e italiano. O modelo foi treinado em 26 idiomas.

Regras do seu jogo

Vender batotas, trocar contas ou dar spoilers da nova temporada são regras do seu jogo, não categorias genéricas.

Como funciona com a VigiMod

  1. 1

    O seu servidor de jogo recebe a mensagem e guarda as últimas mensagens da sala ou partida.

  2. 2

    Envia-as à VigiMod com o id do jogador, a sala como scope e as suas regras.

  3. 3

    Se a mensagem for assinalada, não é difundida; o servidor pode avisar, silenciar ou denunciar o jogador.

Regras para copiar

Envie-as no campo rules: cada uma volta com a sua própria pontuação, como uma categoria integrada.

{
  "rules": {
    "no-cheats": "Sem vender ou partilhar batotas, hacks ou exploits",
    "no-trading": "Sem trocar contas ou itens por dinheiro real",
    "no-spoilers": "Sem spoilers da história da nova temporada",
    "no-boosting": "Sem ofertas de boosting ou venda de ranks"
  }
}

Exemplo

Um servidor de chat em Node.js com WebSockets: cada mensagem é verificada antes de ser enviada aos outros jogadores.

JavaScript (Node.js)

// npm install ws  (Node 18+)
// A game chat server: each message is checked before it is sent to the room
import { WebSocketServer } from "ws";

const RULES = { "no-cheats": "No selling or sharing cheats, hacks or exploits" };
const recent = [];                       // the last messages of the room, sent as context
const wss = new WebSocketServer({ port: 8080 });

async function moderate(text, playerId) {
  const res = await fetch("https://api.vigimod.com/moderate", {
    method: "POST",
    headers: { "X-API-Key": process.env.VIGIMOD_KEY, "Content-Type": "application/json" },
    body: JSON.stringify({ text, context: [...recent], rules: RULES, user_id: playerId, scope: "room-1" }),
    signal: AbortSignal.timeout(2000),
  }).catch(() => null);
  return res?.ok ? res.json() : { flagged: false };   // slow or down: let the message through
}

wss.on("connection", (socket, req) => {
  const playerId = req.headers["x-player-id"] ?? "guest";   // use your own authenticated player id
  socket.on("message", async (data) => {
    const text = data.toString().slice(0, 2000);
    const result = await moderate(text, playerId);
    if (result.flagged) {
      socket.send(JSON.stringify({ type: "blocked", reason: "This message breaks the chat rules." }));
      return;
    }
    recent.push(text);
    if (recent.length > 10) recent.shift();
    for (const client of wss.clients) client.send(JSON.stringify({ type: "chat", playerId, text }));
  });
});

Dicas

  • Verifique as mensagens no seu servidor, nunca no cliente do jogo: a chave API não pode ir dentro do jogo.
  • Use limiares mais altos para toxic nos modos competitivos e mais baixos nos modos familiares: os limiares mudam por pedido.
  • Se a verificação falhar ou demorar, deixe passar a mensagem e registe-a, para o chat não parar.

Perguntas

Posso chamar a VigiMod diretamente do Unity ou do Unreal?
Não ponha a chave API na build do jogo: chame a VigiMod a partir do seu servidor ou backend, que depois decide o que difundir.
Modera o chat de voz?
Não, só texto. Se transcrever a voz para texto, pode verificar a transcrição como qualquer mensagem.
É rápida?
Uma chamada HTTP por mensagem. Dê-lhe um timeout curto e deixe passar a mensagem se demorar; o endpoint batch verifica até 20 mensagens numa chamada.
Serve para jogos com crianças?
Adicione a categoria opcional child_safety (beta), que assinala tentativas de aliciar um menor, e envie essas marcações a uma pessoa da sua equipa.

Experimente na sua comunidade

Crie uma chave API gratuita em dois minutos. Sem cartão, sem período de teste.