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

Star Wars Jedi: Fallen Order: Tudo que você precisa saber sobre o gameplay

Divulgação
Imagem: Divulgação

Giuseppe Carrino

Do GameHall

09/06/2019 09h00

A E32019 ainda não começou pra valer, mas Electronic Arts não perdeu tempo e deu início ao evento EA Play, neste sábado (8). Por lá, revelou mais de um dos seus jogos mais aguardados, "Star Wars: Jedi Fallen Order".

Em um vídeo de quase 15 minutos de duração, foram mostrados vários aspectos da jogabilidade, nos dando uma ideia do que esperar do jogo quando for lançado, em dia 15 de novembro, para PS4, Xbox One e PC (Origin).

Poderes da Força

Star Wars Jedi Fallen Order - Poderes da Força - Reprodução - Reprodução
Imagem: Reprodução

Embora o protagonista, Cal Kestis, ainda seja um Padawan, ele demonstra um bom conhecimento da Força. Além de poder utilizá-la para puxar cipós para se pendurar e empurrar obstáculos, ele também consegue paralisar os inimigos e atraí-los com seus poderes Jedi. O vídeo mostra, inclusive, que você pode combinar a utilização destes poderes, podendo paralisar o disparo do Stormtrooper e depois puxar o inimigo para que fique na frente do disparo, de modo que ele seja morto pelo próprio ataque.

Subindo pelas paredes

Star Wars Jedi - Versatilidade - Reprodução - Reprodução
Imagem: Reprodução

Além dos poderes Jedi, Kestis pegou algumas habilidades emprestadas de jogos como "Uncharted", "Tomb Raider" e "Titanfall". O protagonista consegue escalar determinadas paredes, da mesma forma que Lara e Nathan Drake fazem em seus respectivos jogos, além de realizar pulos duplos e correr nas paredes, de maneira similar ao que é visto no jogo de tiro com os poderosos "mechas" Titãs, o que não é uma surpresa, já que quem está desenvolvendo o game é a Respawn, a criadora de "Titanfall".

Sabre de Luz

Star Wars Jedi - Sabre de Luz - Reprodução - Reprodução
Imagem: Reprodução

Como era de se esperar, em "Fallen Order" você vai poder utilizar o sabre de luz não apenas para atacar os inimigos diretamente como também arremessá-lo em alvos distantes e rebater os disparos dos Stormtroopers. Além disso, ele serve como lanterna em locais escuros, algo que também é demonstrado no vídeo.

Caçadores de Jedi

Star Wars - Caçadores de Jedi - Reprodução - Reprodução
Imagem: Reprodução

Embora os Stormtroopers não representem uma ameaça para Cal Kestis, o trailer deixa claro que os Caçadores de Jedi darão trabalho. Eles possuem uma barra de estamina que precisa ser drenada, de modo que a defesa deles fique aberta a um ataque direto. O vídeo mostra também que quando eles piscam na cor vermelha, realizam um ataque indefensável, requisitando que você desvie para não sofrer dano.

Dróide BD-1

Star Wars - Dróide BD-1 - Reprodução - Reprodução
Imagem: Reprodução

Aparentemente esse pequeno dróide ficará com você durante a maior parte de sua aventura em "Fallen Order". O vídeo mostra que ele é utilizado para entregar uma cura para o jogador, identificar certos objetos e visualizar o mapa da fase, que, aliás, parece até com os mapas tridimensionais presentes em "Metroid Prime".

Variedade de inimigos

Star Wars Jedi - Variedade de inimigos - Reprodução - Reprodução
Imagem: Reprodução

Além das versões de Stormtroopers vistas no vídeo equipadas com blasters, lança-chamas e bastões de energia, e os Caçadores de Jedi, o vídeo apresenta um inimigo aracnídeo que cospe uma teia que paralisa o jogador e um dróide cujas habilidades ainda desconhecemos, já que pouco é mostrado a respeito dele.

Uma aranha ou por aqui?

Star Wars Jedi - Confronto - Reprodução - Reprodução
Imagem: Reprodução

Em um determinado momento no trailer, Cal Kestis investiga o cadáver de um Stormtrooper para saber o que aconteceu com ele e é surpreendido por um dos inimigos aracnídeos. O confronto dá a entender que é possível matar certos oponentes poderosos (ou ao menos lhes infringir muito dano) com apenas um ataque, desde que você repila a investida deles com precisão.

Árvore de habilidades

Star Wars Jedi - Skill Point - Reprodução - Reprodução
Imagem: Reprodução

Depois de matar um certo número de inimigos, o jogador vai receber um ponto de habilidade. Isso indica que o novo "Star Wars" possui um aspecto de RPG no formato de um sistema de árvore de habilidades. Talvez essa caraterística permita ao jogador mudar o estilo da jogabilidade para aquele que mais lhe agradar.

Prioridade no desempenho

Star Wars Jedi - Prioridade no desempenho - Reprodução - Reprodução
Imagem: Reprodução

O vídeo de "Fallen Order" revelado no EA Play roda o tempo inteiro em 60 fps, deixando muito claro que a produtora Respawn Entertainment focou em desempenho ao invés de somente na qualidade gráfica. Uma ótima escolha, visto que isso ajuda muito em jogos onde os reflexos e decisões rápidas são importantes na jogabilidade.