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

Taxa, "simulador de incesto" e mais: bastidores da treta entre Apple e Epic

"Fortnite" está no centro da disputa judicial entre as empresas - Divulgação
"Fortnite" está no centro da disputa judicial entre as empresas Imagem: Divulgação

Lucas Santana

Colaboração para Tilt

28/05/2021 12h45

A batalha na justiça entre a Apple e a Epic Games, produtora do "Fortnite", um dos games mais populares do planeta, ganhou novos capítulos nesta semana em meio a um pé de guerra que se arrasta desde 2020, quando a maçã decidiu banir o jogo de sua loja de aplicativos App Store.

O julgamento do processo começou no dia 3 de maio. Na segunda-feira (24), a juíza Yvonne González Rogers, do Tribunal Distrital dos Estados Unidos, ouviu os argumentos finais no caso para analisar as bases de sua futura decisão, que deve ocorrer até o final do mês.

Se sair vencedora, a Epic pode mudar para sempre o modelo de negócios de plataformas de games em todo o mundo.

Para entender melhor os detalhes dessa batalha judicial, Tilt preparou uma lista com os principais eventos que levaram a isso e algumas curiosidades dos bastidores disso tudo.

1 - Como tudo começou

A Apple cobra uma taxa sobre transações financeiras de todos os aplicativos disponíveis na App Store. No caso, 30%. Essa política não é uma exclusividade da empresa: Google, Playstation, Microsoft e outras companhias donas de plataformas de jogos cobram taxa semelhante das produtoras que utilizam seu serviço para vender seus games.

O "Fortnite" é um jogo gratuito para . Contudo, é comum a venda de itens, vidas, roupas e demais órios digitais dentro do game, o que garante rendimentos à produtora. Com a taxação da Apple, esse comércio de itens gera um custo maior para Epic Games, que precisa pagar 30% sobre todas as micro transações dentro do game à empresa chefiada pelo presidente-executivo Tim Cook.

2 - Epic pediu solução

Já bastante descontente com a taxa da App Store, em meados de 2020, o diretor-executivo da Epic, Tim Sweeney, pediu publicamente aos executivos da Apple uma solução alternativa que garantisse uma forma de pagamento mais justa para sua empresa e seus consumidores. Mas a insatisfação já vinha de anos anteriores (veja mais a seguir).

3 - Epic avisou que driblaria o sistema

Sem uma resposta oficial, Sweeney escreveu um email para Cook e outros executivos da Apple revelando sua intenção de driblar o sistema de taxação da App Store: uma nova atualização do "Fortnite" permitiria pagamentos diretos para a Epic Games, com preços mais convidativos.

4 - Apple bane o jogo

Depois da atualização, em agosto de 2020, a Apple decidiu banir o jogo da sua plataforma de aplicativos. Somente os usuários que já tinham o app instalado em seus aparelhos foram poupados do bloqueio. O Google, que também cobra a mesma taxa de 30%, decidiu retirar o "Fortnite" de sua plataforma, a Play Store, por conta da mesma atualização.

5 - Epic acusa Apple de monopólio

A Epic, então, iniciou o processo judicial contra a Apple, questionando o banimento do aplicativo, a cobrança dos 30% sobre as transações financeiras e uma possível formação de monopólio por meio da App Store.

6 - Publicidade para cutucar Apple

Em óbvia provocação, a Epic Games também divulgou uma campanha em que coloca os avatares de seu "Fortnite" como personagens do famoso comercial "1984", da Apple, lutando contra um sistema opressor e vigilante que controla a todos. Ao final, exibe a tag #FreeFortnite.

7 - "É esse cara?", disse Cook sobre Sweeney em 2015

Antes de tornar o descontentamento público, Tim Sweeney chegou a enviar um email a Tim Cook em 2015 sugerindo gentilmente que o iOS aceitasse outras lojas de games além da App Store, de acordo com informações do site americano Slate. Na época, a Epic e a Apple tinham uma boa relação. Sweeney até participou de um evento de desenvolvedores da empresa. Cook teria lido o e-mail e perguntado aos seus colegas da Apple: "é esse cara que estava nos nossos ensaios para o evento?".

8 - Epic reclama de jogo não ser 1º nos resultados de buscas

Como Tim Sweeney parece gostar de uma briga por email, a confusão não parou por aí. Em 2018, o executivo da Epic enviou outra mensagem à Apple, desta vez furioso pelo fato do jogo não aparecer nos primeiros resultados de uma busca por "Fortnite" na App Store. Assim como o Google, a loja de apps da Apple exibe aplicativos patrocinados entre os primeiros resultados. Sweeney escreveu que estava muito frustrado por descobrir essa informação.

9 - Fogo cruzado

Outras gigantes da indústria de dispositivos móveis, como Spotify e Tinder, também demonstraram insatisfação com a forma de taxação da Apple e demais plataformas.

10 - Epic: Taxa não afeta só "Fortnite"

O julgamento começou nos primeiros dias de maio deste ano. Para ganhar legitimidade e apoio, a Epic tentou incorporar outros aplicativos presentes na App Store na sua ação contra a Apple, alegando que a taxa não afeta apenas o "Fortnite". A Apple, em resposta, tentou reduzir o escopo do processo a aplicativos de jogos.

11 - É um jogo ou não é?

Durante o julgamento, outro embate: foi levantado a questão de o "Fortnite" ser ou não um jogo de videogame. "O 'Fortnite' pode parecer muito um jogo, no entanto, ele é mais do que isso, é um metaverso", disse Matthew Weissinger, vice-presidente de marketing da Epic Games.

A produtora ainda defendeu a sua própria plataforma de compra de jogos, a Epic Games Store. Lá, é possível encontrar outras lojas de games, como a plataforma itch.io, de jogos alternativos.

12 - O "simulador de incesto"

A Apple rebateu dizendo que lojas como essa contém todo tipo de jogos, muitos deles fora dos padrões de qualidade e de conteúdo da companhia, como o jogo "Sisterly Lust", basicamente um simulador de namoro em que o personagem principal se envolve em relações sexuais explícitas com sua mãe e irmãs.

13 - Tim Cook no tribunal

O julgamento avançou e, pela primeira vez na história, o diretor-executivo da Apple, Tim Cook, foi a um tribunal para prestar seu depoimento sobre o caso. Segundo a BBC, ele teve dificuldades de explicar o modelo de negócio da App Store e mesmo se a plataforma era lucrativa.

Contudo, Cook revelou que boa parte do dinheiro que entra na loja de aplicativos vem do sistema de taxação que a Epic questiona. O site TechCrunch classificou sua participação no tribunal como "mediana, ignorante e cuidadosamente direcionada".

14 - Até a Netflix foi envolvida

Embora muito dura com as irritações da Epic, a Apple avaliou seriamente mudar seu sistema para a Netflix, como foi revelado no tribunal. Em 2018, uma queda brusca no número de s do streaming no iOS acendeu um alerta na Netflix sobre a segurança dos dados de seus usuários na plataforma, o que levou a companhia a avaliar um sistema de s fora da App Store. Uma negociação entre a Apple e a gigante do streaming quase levou Tim Cook a abrir uma exceção para a Netflix.

15 - Apple se defendeu falando de números

Em uma de suas últimas cartadas no tribunal, a Apple mostrou que a Epic Games paga menos para a companhia do que paga para outras plataformas concorrentes. Em 2017, o "Fortnite" rendeu US$ 237 milhões para a App Store, enquanto pagou US$ 245 milhões à Microsoft e US$ 251 milhões para a Sony no mesmo período.

A Epic retrucou dizendo que as fabricantes do PlayStation e do X-Box vendem seus consoles no mercado com subsídios, enquanto a Apple ganha rios de dinheiro com os iPhones e o iPads.

A Apple e a Epic Games não precisarão esperar muito para encerrar essa briga, pois a decisão da Justiça da Califórnia deve sair nos próximos dias. Vamos aguardar.