;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL

Topo

Assédio e preconceito: Valorant recebe onda de denúncias, Riot responde

Comunidade pede por punimentos mais severos a jogadores tóxicos - Divulgação/Riot
Comunidade pede por punimentos mais severos a jogadores tóxicos Imagem: Divulgação/Riot

Amanda Santos

Do START, em São Paulo

28/05/2020 04h00

Antes mesmo do lançamento oficial, Valorant ultraou a marca 1,6 milhão de espectadores na Twitch após início do Beta, mas a empolgação da comunidade logo deu lugar a problemas. Tanto no exterior quanto no Brasil, começaram a surgir relatos de toxicidade, racismo e assédio nas partidas do jogo de tiro —quase sempre envolvendo o chat por voz, ferramenta de comunicação entre os jogadores.

O caso de maior repercussão veio de uma desenvolvedora da própria Riot Games. Tea "Greenily" é designer de Teamfight Tactics e foi assediada ao vivo na última sexta-feira (24), durante uma transmissão que fazia na Twitch.

A discussão começou quando a designer postou um exemplo de alguns dos comportamentos inadequados que ela presenciou enquanto jogava Valorant, observando que silenciar o jogador por seus comentários não seria suficiente para impedi-lo de assediar outras pessoas.

Logo depois, a produtora executiva de Valorant, Anna Donlon, respondeu as mensagens no Twitter dizendo que o comportamento do jogador havia sido "nojento e assustador". Além disso, revelou não jogar partidas no modo solo por conta disso.

Donlon também confirmou que os desenvolvedores do jogo estão buscando soluções para tornar o jogo mais saudável e seguro a longo prazo para todos todos os jogadores, seja em time fechado ou solo.

No Brasil não é diferente

Valorant Phoenix - Divulgação/Riot - Divulgação/Riot
Imagem: Divulgação/Riot

No Brasil, onde Valorant desembarcou no começo de maio, a discussão aumentou após a streamer Bruna "einebru" Carvalho também publicar um vídeo em que era alvo de inúmeros xingamentos de um jogador.

Mesmo depois de ela usar a ferramenta "silenciar" (o famoso "mutar"), outro integrante do time começou insultá-la no chat de voz, usando usando o termo "mongoloide" com intenção de prejudicar a transmissão. O uso da expressão foi responsável, também em maio, pela suspensão ou banimento de outros streamers da Twitch.

Em entrevista ao START, a influenciadora contou como já perdeu a conta de quantas vezes presenciou esse episódio: "Jogo League of Legends desde 2013 e já tô inserida nesse meio tóxico há um tempinho já", conta.

Bruna “einebru” Carvalho - Arquivo Pessoal - Arquivo Pessoal
Imagem: Arquivo Pessoal
Isso se repetiu, sempre acontece, inclusive no dia seguinte ao ocorrido, eu falei no chat de voz que meu amigo estava tendo problemas pra conectar no jogo, e outro jogador já riu e falou 'é mulher, é?'
Bruna "einebru" Carvalho

Com as publicações, outras mulheres prestaram apoio e também desabafaram. "Muitas falaram sobre não jogar mais porque não aguentam mais", revela Bruna. "É triste, você se sente inferior em um jogo que você abre para se divertir e acaba recebendo discurso de ódio totalmente gratuito".

O mesmo aconteceu com a streamer Gabriella "gabruxona" Antunes. Segundo ela, o jogador pediu desculpas no fim da partida depois de ouvir de outros jogadores sobre o risco de ser banido.

A streamer Gabi Cattuzzo também falou sobre como responder os insultos pode ser tão ruim quanto ouvir calado, transformando a vítima em vilão.

A caster de League of Legends e comentarista do programa Depois do Nexus, Letícia Motta, também falou para o START sobre como o sistema de denúncias ainda se mostra fraco.

Segundo ela, a falta de apoio do próprio jogo é um agravante que pode até diminuir o número de jogadoras. "Nós, mulheres, já entramos no jogo receosas porque o cenário e o mundo são machistas, e aí fica sempre aquele medo de falar, de usar a nossa voz e tal pra dar call", explica Letícia.

"Um player tóxico incomoda muita gente..."

Valorant Brimstone - Divulgação/ValorantPT - Divulgação/ValorantPT
Dois players tóxicos, incomodam, incomodam..
Imagem: Divulgação/ValorantPT

O protesto não vem apenas do público feminino. Para o jornalista e podcaster, Rique Sampaio, é dever da desenvolvedora responder com soluções a esses problemas.

O diretor de Valorant, Joe Ziegler, convidou a comunidade a ser civilizada. Respondendo a um tweet da influencer Pokimane — que pedia gentileza com mulheres em chats de voz — ele contou como abusos continuam arruinando a experiência de muitos jogadores.

SIGA O START NAS REDES SOCIAIS

Twitter: https://twitter.com/start_uol
Instagram: https://www.instagram.com/start_uol/
Facebook: https://www.facebook.com/startuol/
TikTok: http://vm.tiktok.com/Rqwe2g/
Twitch: https://www.twitch.tv/start_uol