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

"Elden Ring": o que sabemos sobre o novo jogo dos criadores de "Dark Souls"

Giuseppe Carrino

Do GameHall

09/06/2019 21h20

A Bandai Namco anunciou oficialmente "Elden Ring", novo jogo da FromSoftware, estúdio famoso pelos jogos das séries "Dark Souls", "Bloodborne" e, mais recentemente, "Sekiro". A revelação aconteceu na apresentação da Microsoft que antecede a E3 2019, neste domingo (9).

Porém, poucas informações foram divulgadas na apresentação. Sabemos que ele sairá para PC, PS4 e Xbox One, mas ainda não temos uma data de lançamento. Por isso fomos atrás de mais detalhes, e reunimos tudo o que já sabemos sobre "The Elden Ring" a seguir.

Uma parceria e tanto

George R R Martin - Nick Briggs/HBO - Nick Briggs/HBO
Imagem: Nick Briggs/HBO

O mundo de fantasia de "Elden Ring" está sendo criado pelo renomado diretor da FromSoftware, Hidetaka Miyazaki, a partir de mitologias e histórias saídas da mente de George R. R. Martin exclusivamente para o game. O autor é conhecido pela série de livros "As Crônicas de Gelo e Fogo", que foi adaptada na mundialmente conhecida série de TV "Game of Thrones". O desenvolvimento do jogo, aliás, começou logo após a conclusão dos DLCs de "Dark Souls 3".

Será um RPG de ação em terceira pessoa

Elden Ring 1 - Reprodução - Reprodução
Imagem: Reprodução

Como era de se esperar, "Elden Ring" terá uma jogabilidade que é bem característica dos outros sucessos da FromSoftware. A customização de personagens mais próxima de "Dark Souls" está confirmada, mas Miyazaki deixou claro que o novo game terá um foco maior nos elementos de RPG e não tanto na ação, como era o caso de "Sekiro".

Temática nórdica

Elden Ring 2 - Reprodução - Reprodução
Imagem: Reprodução

Embora tanto a Bandai quanto a FromSoftware ainda não tenham confirmado oficialmente a temática do jogo, o trailer divulgado, com a presença de uma personagem que se assemelha a uma Valquíria e um ferreiro cuja aparência lembra muito a de um viking forjando algo, dá a entender que teremos forte influência da mitologia nórdica nos personagens, monstros, armas, cenários e história.

O maior jogo da FromSoftware até hoje

Elden Ring 3 - Reprodução - Reprodução
Imagem: Reprodução

De acordo com a Bandai Namco, "Elden Ring" será o trabalho mais ambicioso da FromSoftware, ando-se em um reino permeado por uma história repleta de sangue e detalhes, fruto das mentes de Hidetaka Miyazaki e George R. R. Martin. O diretor promete entregar um mundo aberto vasto, com design intricado, repleto de perigos e ameaças.

Inimigos derrotados darão novos poderes ao jogador?

Elden Ring 4 - Reprodução - Reprodução
Imagem: Reprodução

O trailer de anúncio de "Elden Ring" mostra no primeiro minuto alguém "vestindo" um braço decepado, como se fosse uma espécie de luva. Pouco depois, uma moça com armadura encaixa um novo braço em seu corpo. Isso sugere que talvez no jogo certos inimigos ou chefes que forem abatidos concedam, por meio de partes de seu corpo, novas habilidades ou poderes ao jogador. Por falar em chefes, as lutas com eles serão memoráveis de acordo com Hidetaka Miyazaki, dá mesma forma que nos outros jogos da FromSoftware.

Localização em português

Elden Ring 5 - Reprodução - Reprodução
Imagem: Reprodução

A julgar pelos últimos trabalhos da FromSoftware e o fato de que o trailer de anúncio de "Elden Ring" está legendado em português, é bastante provável que o novo game venha ao menos com legendas e textos em português brasileiro.