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

'Peço desculpas': os planos da Nintendo para reconquistar os brasileiros

Bill van Zyll, diretor sênior e gerente geral para a América Latina da Nintendo of America - Rodrigo Lara
Bill van Zyll, diretor sênior e gerente geral para a América Latina da Nintendo of America Imagem: Rodrigo Lara

Rodrigo Lara

Colaboração para Tilt

10/10/2022 14h56

A relação entre os fãs brasileiros e a Nintendo teve uma série de altos e baixos nos últimos anos. O pior momento foi no início de 2015, quando a empresa parou de distribuir games e consoles no país sob a justificativa de que o ambiente de negócios e os impostos inviabilizavam sua presença no mercado nacional.

Em 2018, a empresa ensaiou um retorno ao país, ao colocar no ar uma versão nacional da eShop, sua loja online de games. E concretizou esse movimento em setembro de 2020, quando iniciou as vendas do Switch - que até então só podia ser comprado via importadores independentes.

"Eu sei que o fã brasileiro é apaixonado e, antes de qualquer coisa, eu gostaria de pedir desculpas por esse período que ficamos afastados". Essa foi uma das primeiras falas de Bill van Zyll, diretor sênior e gerente geral para a América Latina da Nintendo of America, em entrevista exclusiva a Tilt durante a Brasil Game Show 2022.

"Nós sempre tivemos a noção dessa paixão e isso nos motivou a buscar um modelo mais eficiente para marcarmos presença neste mercado. Isso levou um tempo e exigiu decisões envolvendo a classificação etária dos jogos e modelos de distribuição dos produtos", complementou.

Nintendo na BGS - Divulgação - Divulgação
Estande da Nintendo na BGS tem dezenas de estações para público jogar o Switch
Imagem: Divulgação

Veio para ficar?

Na BGS, foi anunciado o início das vendas de games do Switch em versão física, com direito a encartes traduzidos nas caixinhas. O novo modelo do Switch, com tela Oled, também desembarcou no país. A marca parece viver um bom momento na sua relação com o país.

Mas isso acaba gerando outra dúvida: a empresa de Mario e Zelda veio para ficar?

"Essa é nossa ideia", diz van Zyll. "A meta era desenvolver um modelo de negócio sustentável no país e, definitivamente, é o que estamos fazendo. Nós estamos desenvolvendo algo justamente pensando em longo prazo", diz.

Mas ainda há desafios para essa aparente "lua de mel". Um dos principais, frequentemente citado em reclamações nas redes sociais, diz respeito à localização dos games em português brasileiro, em especial os exclusivos do Switch. Alguns games até saíram recentemente em nosso idioma, como no caso de Mario Party Superstars, de 2021, mas eles ainda são minoria.

Para van Zyll, esse tema não é tão simples de ser resolvido, por dois motivos: a complexidade do processo e a filosofia da empresa.

"O problema com a localização é que não se trata apenas de uma tradução. Envolve transmitir a emoção dos jogos, o humor, enfim, oferecer uma experiência completa. É importante ressaltar que a Nintendo tem um histórico de qualidade acima de tudo, nós não vamos lançar um jogo inacabado, por exemplo. E isso também vale para a localização. Mas a nossa ideia é trazer cada vez mais games localizados para o Brasil e expandir nossa biblioteca", diz.

Ele também promete colocar o país na rota dos lançamentos. "Nossa ideia, a partir de agora, é trazer as novidades o quanto antes para cá. É um compromisso que meu chefe, Doug Bowser [presidente da Nintendo of America que, coincidentemente, tem o sobrenome idêntico ao nome do principal vilão da série Mario], me ou pessoalmente e que, dentro do possível, pretendemos cumprir. Não é uma promessa, já que há uma série de desafios, mas faremos nosso melhor para que isso aconteça", conclui.

Mario e os coelhos

Mario + Rabbids Spark of Hope - Divulgação - Divulgação
Mario + Rabbids Sparks of Hope é um crossover com jogabilidade viciante e muito humor
Imagem: Divulgação

A Nintendo tem aquele que provavelmente é o estande de maior destaque na BGS 2022, com dezenas de estações com Switch para o público e um palco para diversas atividades.

Foi lá que Tilt pode experimentar em primeira mão um dos próximos games que desembarcarão no console: Mario + Rabbids Sparks of Hope. Em um teste de cerca de 20 minutos, já deu para entender que o jogo é uma promissora evolução do seu antecessor, Mario + Rabbids Kingdom Battle, de 2017.

É um crossover na forma de RPG estratégico por turnos produzido pela Ubisoft, reunindo os coelhos malucos que são mascotes da empresa e os personagens do universo de Mario.

Há uma série de novidades no jogo. A mais perceptível é um novo sistema mais livre de movimentação, que privilegia uma abordagem mais criativa tanto na hora de atacar quanto de se defender. A história tem forte apelo cômico e, a julgar pelo primeiro da série, tem tudo para ser o tipo de game capaz de prender os jogadores do início ao fim.

Mario + Rabbids Sparks of Hope tem lançamento previsto para 20 de outubro e estará totalmente em português.