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

OPINIÃO

Doom retorna com tudo e mata a saudade dos fãs de jogos de tiro

Reprodução
Imagem: Reprodução

Rodrigo Guerra

Do UOL, em São Paulo

26/05/2016 15h12

Depois de muito tempo longe dos videogames, doze anos para ser específico, "Doom" retorna e mata a saudades de quem procurava um jogo de tiro diferente.

Ou não.

É curioso notar como este novo "Doom" apresentando exatamente o que trouxe nos anos 90: ação e heavy metal.

Lançado para PlayStation 4, Xbox One e PC, trata-se de mais um reboot da série, ou seja, quem não teve o aos primeiros games não precisa se preocupar com o que aconteceu antes. Mas isso também não seria um grande empecilho, já que a história não é tão profunda assim para ficar perdido.

Você é um soldado que acorda de um longo tempo de hibernação. Logo nos primeiros segundos descobre que está em Marte e que o planeta tem uma ligação com o inferno. Cabe a você acabar com a farra dos demônios do jeito que você melhor sabe: com muito chumbo grosso.

Doom 2016 KeyArt - Reprodução - Reprodução
Imagem: Reprodução

Por mais que a premissa de "Doom" seja simples, ela abraça um lado meio que esquecido dos jogos de tiro: a ação frenética e desenfreada. Esqueça os mundos abertos de "Far Cry", a história profunda de "Bioshock" e deixe de lado o sentimento patriótico que "Call of Duty" e "Battlefield" tentam enfiar goela abaixo. "Doom" deixa o jogador ser o centro das atenções e dá as ferramentas para isso.

Não precisa ficar escondido no canto como em uma galeria de tiro: você deve tomar a iniciativa para chutar algumas bundas. Você é o cara que carrega uma metralhadora laser que desintegra demônios, que arranca mandíbulas com as próprias mãos e destrói uma horda de seres infernais com um míssil superpoderoso. Você se movimenta pelo cenário dando socos e disparando com uma fluidez sem igual.

Doom 2016 Análise 1 - Divulgação - Divulgação
Imagem: Divulgação

Tudo isso é possível graças aos controles precisos e práticos. Você nem precisa se preocupar em recarregar, pois isso incomoda e só é um gargalo para a ação. E, se acabarem as balas, basta fazer uma execução com as próprias mãos para ganhar vida e munição.

A diversidade de armas é um belo presente, pois conforme você vai jogando vai ganhando melhorias para deixar a sua invasão ao inferno ainda mais dinâmica. Você vai pegar minifoguetes que grudam na pele dos demônios e os explode em pedacinhos. Outra modificação é a escopeta que dispara uma granada - ótima para limpar a área quando aparece um monte de capetinhas amontoados.

O jogo vai mostrando arenas com mais e mais demônios que deixam o jogo cada vez mais difícil. Porém, essa simplicidade de narrativa ou mecânica não deixa o jogo repetitivo ou enjoativo, pois os cenários são bem construídos e os inimigos se movem de forma imprevisível, alguns buscando atacar pelos flancos, outros vindo em sua direção feito loucos. Mas são as lutas contra chefes que fazem você ficar na ponta do sofá buscando sobreviver às investidas.

Doom 2016 Análise 2 - Divulgação - Divulgação
Imagem: Divulgação

Claro, a história da campanha é previsível e até clichê. A parte mais irritante é quando o game tenta colocar um sentido na carnificina, forçando o jogador a prestar atenção no roteiro. Felizmente, esses momentos são escassos e você pode voltar a atenção ao que importa: apertar o botão de gatilho para dar mais tiros.

Quem gosta de descobrir segredos vai ar um bom tempo procurando por diversos colecionáveis escondidos em lugares inusitados. Existem referências aos jogos anteriores do jogo que tornam a caça por extras ainda mais divertidas, como um computador que mostra uma enciclopédia de monstros que usa gráficos do primeiro jogo para descrevê-los.

Enquanto a campanha é bem divertida e frenética, os modos multiplayer ficam praticamente em segundo plano. Não que eles sejam chatos ou sem graça, muito pelo contrário, é que o modo solo rouba a cena de tal forma que brincar de mata-mata em equipes ou capturar a bandeira não tem nenhum atrativo especial. Esses modos lembram a glória de "Quake", mas sem dar um o adiante.

Doom 2016 Análise 3 - Divulgação - Divulgação
Imagem: Divulgação

Talvez o que se salve são as arenas criadas pelo SnapMap, um modo no qual os jogadores criam desafios para serem jogados sozinho ou online e que podem ser compartilhados pela internet. É uma ferramenta de criação muito simples e divertida de ser usada, mas que pode criar coisas bem complexas. É como se fosse um "Mario Maker" de "Doom" - vale muito dar uma olhada depois de acabar a campanha.

No final das contas, o retorno de "Doom" surpreende. Com uma campanha solo divertida e bastante criativa, a iD Software mostrou que ainda tem bala na agulha para fazer jogos divertidos. O jogo traz o mais puro heavy metal para dar o clima apocalíptico típico dos anos 1990, mas muito moderno e gostoso de jogar.

Nota: 9 (Excelente)

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: http://vm.tiktok.com/Rqwe2g/
Twitch: https://www.twitch.tv/start_uol

** Este texto não reflete, necessariamente, a opinião do UOL