;(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

Rigby e Mordecai jogando Overwatch? É a final do torneio ToonTubers League

Personagens de "Apenas um Show" formam times com streamers em torneio de eSports  - Reprodução
Personagens de "Apenas um Show" formam times com streamers em torneio de eSports Imagem: Reprodução

Bruno Dias

Colaboração para o START

23/07/2019 19h00

Desde 2016, Rigby e Mordecai, estrelas de "Apenas Um Show", são os gamers oficiais do Cartoon Network. Eles são os protagonistas de "ToonTubers", série de gameplays do canal pago transmitida para toda a América Latina, que no próximo domingo (28) ganha um de seus "episódios" mais épicos: a final da "ToonTubers League", primeiro torneio de eSports do canal.

O jogo escolhido para a grande final foi "Overwatch", da Blizzard, e a disputa será realizada em São Paulo, com transmissão ao vivo a partir das 18h (horário de Brasília) no YouTube, e às 21h, na TV.

Serão seis times na disputa, formados por personagens de "Apenas Um Show" e gamers do Brasil, México, Chile e Argentina, que ficaram assim: Mordemitos (Mordecai + Hagazo), Lendários Rigbestas (Rigby + TheDonato, gamer venezuelano que vive na Argentina), Doutrinadores ( Benson + gamer surpresa que será revelado no dia da Liga), Mãostruosos (Musculoso + Fantasmão + PAC, um dos criadores do canal TazerCraft), Eileences (Eileen + Kim Bonilla, uma das maiores gamers mexicanas) e Maravilhosos (Pairulito + Swaggron333, gamer do Chile). Tudo com a narração e comentários de Octávio Neto.

Apenas um game?

"ToonTubers" já foi assistido por mais de 21,5 milhões de pessoas na América Latina desde sua estreia no Cartoon Network, em 2016. A atração nasceu no YouTube, onde acumula 116 milhões de views no Brasil e 316 milhões na América Latina, e a partir de 2017 ou a fazer parte da grade de programação do canal na TV.

"A gente tinha muito medo [de levar 'ToonTubers' pra TV], a princípio não sabíamos se era uma linguagem que só faria sentido no YouTube, com aquele tipo de tela, com controle que você pode ar pra frente o jogo, pausar. A gente meio que arriscou e colocou no canal pra entender o comportamento da nossa audiência e deu supercerto", conta Vivian Arias, uma das criadoras da série.

Nos episódios, que são gravados, e não ao vivo, os personagens recebem convidados especiais, e através do gameplay acabam contando uma história. Como, por exemplo, no episódio de "League of Legends" em que o tema foi uma batalha de narradores.

Os fãs de "Apenas Um Show" curtiram tanto "ToonTubers" que eles mesmos começaram a chamar a atração nascida na web de "spin-off". "Quando você está assistindo a um episódio de 'ToonTubers', você não está assistindo só um gameplay. O episódio não é sobre a jogabilidade do game que está sendo jogado, na verdade existe um arco de história ali do que está acontecendo no jogo, existe uma intenção entre o Rigby e o Mordecai que gera uma tensão no episódio. Você está assistindo tanto um gameplay quanto um episódio de 'Apenas Um Show'."

Arriscando no ao vivo

"Quando a gente entrou pra esse universo game, tínhamos uma consciência muito grande da comunidade de gamers no YouTube, na internet, o que eles gostam de assistir, os gamers que eles seguiam. A gente entende que é uma comunidade que tem suas próprias regras, jeito de ser, em nenhum momento a gente quis correr o risco de se colocar dentro daquela comunidade e parecer que era um oportunismo do Cartoon Network, porque não era. A gente queria entrar de maneira certa", explica Vivian.

Segundo a criadora de "ToonTubers", a comunidade abraçou a série de cara, e muitos gamers davam sugestões de jogos para Rigby e Mordecai jogarem, tanto que a dupla já se aventurou em games como "Trials Rising", "Rocket League", "Hearthstone", "League of Legends" e "Fortnite".

"Da mesma forma que a gente entrou com 'ToonTubers', a gente está entrando com a 'ToonTubers League' de uma maneira em que estamos pensando o que realmente podemos entregar a mais para a comunidade de eSports", disse Vivian. "É um risco calculado que a gente está tomando, colocar o canal ao vivo pela primeira vez, com conteúdo de eSports, com a linguagem de "ToonTubers", que a gente sabe que é segura. Seja crescendo dentro de 'ToonTubers', ou crescendo por outro caminho, mas definitivamente é primeira sementinha que estamos plantando."