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

Duo Start

Leo Bianchi entrevista os pro-players e streamers mais hypados do momento


Piuzinho: conheça gênio que fez R$ 1 milhão criando série e filme no GTA RP

De START

Em São Paulo

25/10/2021 04h00

Com uma carreira de streamer que começou no Free Fire e se consolidou no GTA RP, o mineiro Ricardo Henrique "Piuzinho" Ferreira acumulou números impressionantes. Só no YouTube, são 12 milhões de inscritos e quase 1 bilhão de visualizações.

E tudo isso deve mudar logo mais: ele contou, em primeira mão a START, que está prestes a fechar um acordo com uma marca "grande", que nunca havia se associado ao universo dos games. "Se der certo, vou ganhar um valor que nenhum outro streamer jamais ganhou", explica.

E de ganhar dinheiro, ele entende. Piuzinho se especializou em GTA RP, uma versão modificada do jogo Grand Theft Auto em que os usuários podem simular diferentes personagens e encenar histórias.

Foi a válvula de escape perfeita para sua criatividade. Ele já lançou um filme inteiro rodado dentro do jogo, além de um álbum de músicas e um seriado que, para ser assistido, exigia uma espécie de - e que lhe rendeu, pelo seus cálculos, cerca de R$ 1 milhão.

A chave para o sucesso foi seu estilo cômico, que ele desenvolveu ainda no início da adolescência, para ajudar na venda de salgadinhos em Sete Lagoas, interior de Minas Gerais. "Pensa num cara que aconteceu só coisa ruim", diz, referindo-se a si mesmo. "O humor salvou minha vida", define. Confira essa história no vídeo no topo da página.

Antes de migrar para o GTA RP, porém, Piuzinho se destacou no Free Fire. Chegou a ter uma parceria com a Garena, publisher do jogo, que terminou de uma maneira dolorosa. "Se houvesse um diálogo, eu ainda estaria com a Garena", desabafa. Ele fala sobre o fim do contrato na segunda parte da entrevista, abaixo:

No cenário do Free Fire, Piuzinho se tornou um grande amigo de Cerol, pro player e fundador da Fluxo, uma das organizações mais poderosas do eSport brasileiro. E Piuzinho quase participou dela. Esse é um dos temas do terceiro vídeo, no qual ele fala também sobre as várias brigas públicas que já teve com Cerol. "É tudo na amizade", garante. Confira:

"Minha mente não para de criar", diz o influenciador. Na quarta parte da entrevista, ele conta como surgiram alguns de seus projetos mais ambiciosos, como o longa-metragem que ele mesmo roteirizou e gravou dentro do GTA RP, e o álbum de músicas inspirado no jogo. Como ele concilia isso com a vida em família e o bebê de dois anos? Veja abaixo:

Para finalizar, fala sobre o futuro. Confirma que está prestes a lançar seu próprio time de criadores de conteúdo, com o tal patrocínio que vai render um valor inédito até então no cenário gamer brasileiro. Mas ele também é categórico: acha que GTA RP só deve continuar como um fenômeno de audiência por, no máximo, mais um ano. "O novo cenário competitivo vai matar a essência do GTA RP", garante. Confira:

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: https://www.tiktok.com/@start_uol?
Twitch: https://www.twitch.tv/startuol