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

Belo e divertido, "Dragon Ball FighterZ" é o melhor game do anime já feito

Reprodução
Imagem: Reprodução

Rodrigo Lara

Do Gamehall

24/01/2018 09h51

"Dragon Ball FighterZ" impressionou desde que foi apresentado na E3 do ano ado. Lutas ágeis e gráficos caprichados aram a impressão de que o que se via ali não era um jogo, mas sim um dos episódios da famosa franquia de anime.

Agora temos a oportunidade de colocar as mãos na versão final do jogo. É verdade que os testes beta ajudaram a dar um gostinho do que o game seria, mas é possível afirmar que o produto final vai muito além daquilo que foi mostrado.

Jogo ou anime?

É quase impossível falar de "Dragon Ball FighterZ" e não citar, de cara, o visual do game. As lutas se desenrolam em um plano bidimensional, como jogos de luta mais tradicionais. Os cenários, porém, são 3D.

Nota - Dragon Ball FighterZ - Montagem/UOL - Montagem/UOL
Game testado no Xbox One
Imagem: Montagem/UOL

Essa última característica é usada pelo game em vários momentos, como durante os superataques ou, ainda, quando se rebate raios de energia contra o cenário, que é destrutível.

Por falar em cenários, eles sofrem as consequências das batalhas. Finalizar o oponente com um golpe forte faz ele voar contra prédios e montanhas. Já derrotar um adversário ou acabar a luta usando um supergolpe detona as arenas por completo, revelando novas versões do ambiente.

Outro ponto que chama muito a atenção é o cuidado da Arc System Works - produtora do game e responsável por títulos como "Guilty Gear" e "BlazBlue" - na hora de criar os movimentos dos lutadores. Praticamente todos os golpes têm referências diretas aos animes e isso vai muito além de "s" de personagens, como o Kamehameha de Goku.

Dragon Ball FighterZ - Golpe Trunks - Reprodução - Reprodução
Movimentos dos personagens fazem diversas referências ao anime; fãs perceberão detalhes altamente agradáveis no jogo
Imagem: Reprodução

O mesmo vale para introduções e desfecho de lutas especiais, que dependem de determinadas condições para serem ativados e recriam agens famosas da série.

São detalhes extremamente satisfatórios e que saltarão aos olhos dos fãs da franquia, gerando uma dúvida: afinal, você está jogando ou assistindo um episódio do anime?

Dragon Ball FighterZ - Goku irritado com o Freeza - Reprodução - Reprodução
Dependendo do cenário utilizado e do personagem, o jogo irá reencenar agens emblemáticas do desenho, como primeiro confronto entre Goku e Freeza
Imagem: Reprodução

Parece simples, mas não é

Você já deve ter ouvido a expressão "fácil de jogar, difícil de dominar". Ainda que seja um recurso de marketing para dizer que um game é ível a novatos, mas profundo o suficiente para manter a atenção de jogadores mais experientes, "Dragon Ball FighterZ" se encaixa perfeitamente nesta definição.

Inicialmente, o game a a impressão de que, para se dar bem em uma luta, basta apertar os botões freneticamente. É verdade que os comandos de golpe fraco, médio e forte, se pressionados repetidamente, vão criar combos automáticos. Como tudo na vida fica melhor quando é feito com consciência, essas sequências am longe de serem tão efetivas quanto os, digamos, combos autorais.

Apesar dos golpes seguirem uma estrutura básica, ela pode ser ampliada dependendo da habilidade do jogador.

Dragon Ball FighterZ - Super do Goku Black - Reprodução - Reprodução
Os super-golpes são exagerados, como é típico da franquia; lutadores têm estilos distintos e isso ajuda a dar profundidade para o jogo
Imagem: Reprodução

Para não ser repetitivo, o game conta com personagens que têm sequências distintas o suficiente para fazer com que a fórmula básica simplesmente não funcione. E é aí que a profundidade do jogo se faz presente e surge de uma maneira que a Arc System Works transformou em marca: criar personagens que diferem bastante uns dos outros.

Lutadores como Hit, Ginyu e Bills possuem recursos exclusivos e levam muito mais tempo para serem dominados do que os triviais Goku e Vegeta. Por outro lado, personagens "esquecidos" do anime, como Yamcha, aparecem como fortes opções para quem quer surpreender os adversários.

Os personagens são equilibrados entre si, o que deixa nas mãos do jogador a capacidade de fazer a diferença. E há um modo treino que ensina as peculiaridades de cada um deles.

História agradável

Para essa análise, a cópia do game enviada pela Bandai Namco ainda não tinha o modo online habilitado. A maior parte do tempo, portanto, foi gasta em duas modalidades: História e Arcade.

A primeira coloca o jogador para seguir a trama envolvendo uma nova vilã, a Androide N.º 21. Não revelaremos mais detalhes do enredo para não estragar a surpresa, mas cabe dizer que facilmente ele poderia inspirar a criação de um filme de "Dragon Ball" - e com bons resultados.

Dragon Ball FighterZ - Modo história - Reprodução - Reprodução
Modo História do game reúne os personagens mais populares da franquia e agrada pela narrativa; dublagem brasileira faz falta
Imagem: Reprodução

Há três arcos distintos, cada um deles dando um ponto de vista da trama. Uma vez nesse modo, o jogador percorre uma espécie de tabuleiro, com casas livres ou que representam batalhas. Ao longo do percurso, é possível desbloquear companheiros e enfrentar adversários especiais.

Aqui, é impossível não repetir algo dito nos últimos meses: a dublagem com as vozes brasileiras do desenho faz uma tremenda falta.

Não pelo fato do áudio original do anime ser ruim - e não é -, mas seria fantástico poder ouvir Wendel Bezerra, Tânia Gaidarji, Alfredo Rollo e companhia novamente dando vida a personagens que marcaram a infância de muitos brasileiros. Seria um argumento a mais para convencer os jogadores a pagarem R$ 250 por uma cópia do game nos consoles.

Dragon Ball FighterZ - Modo Arcade - Reprodução - Reprodução
Modo Arcade de "Dragon Ball FighterZ" se divide em rotas, desbloqueadas de acordo com o desempenho nas lutas
Imagem: Reprodução

Já o modo Arcade coloca o jogador para lutar contra adversários controlados pela máquina, seguindo um caminho determinado pelo desempenho nas lutas. É uma boa forma de ar o tempo e deverá agradar quem não quiser se aventurar no modo online contra adversários de carne e osso.

O melhor "Dragon Ball" da história

Seja pelo esmero de sua produção e pelas incontáveis referências à série, "Dragon Ball FighterZ" atinge o posto de melhor game do anime já feito e pode ser considerado título indispensável para quem é fã da franquia. Mais do que isso, ele tem tudo para agradar quem curte um bom jogo de luta e deve fazer bonito tanto no cenário casual quanto no competitivo.

Além disso, ele marca o rompimento com os games em 3D da franquia - o que, convenhamos, já deu o que tinha que dar. E faz isso sendo simples o suficiente para agradar quem curtia o apertar de botões frenético desses jogos quanto aqueles que procuram partidas mais técnicas.

O jogo tem lançamento marcado para 26 de janeiro, com versões para PC, PlayStation 4 e Xbox One.