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

De Smash Bros. a Kingdom Hearts: os crossovers mais inusitados dos games

Super Smash Bros. Ultimate - Reprodução
Super Smash Bros. Ultimate Imagem: Reprodução

Tiago Alcantara

Colaboração para o START

16/02/2020 04h00

Janeiro marcou a chegada de mais uma adaptação de um game do Wii U para o Nintendo Switch: Tokyo Mirage Sessions #FE Encore. Apesar de não fazer muito barulho no seu lançamento, ele tem como grande diferencial a proposta de unir os mundos de Fire Emblem e Shin Megami Tensei - duas franquias bastante populares no mundo dos RPGs.

Essa união entre Nintendo e Atlus lembra que há uma série de outros crossovers famosos no mundo dos games. Sim, a indústria há muito tempo aprendeu que sempre é possível juntar personagens conhecidos - por mais ridículo que seja o cenário - para lucrar. Nem sempre dá certo, mas listamos alguns dos encontros entre universos mais marcantes.

Super Smash Bros.

Smash Bros -  -

Ninguém duvida que o game de luta da Nintendo é o crossover mais bem-sucedido do mundo dos games. Só a última edição da franquia, Super Smash Bros. Ultimate, para o Nintendo Switch vendeu mais de 17,6 milhões de cópias. O segredo para atrair tantos jogadores? Colocar Sonic, Cloud, Mario, Yoshi, Terry Bogard, Pikachu, Zelda, Banjo e Kazooie e vários personagens de Fire Emblem para lutar num esquema de arena com todo tipo de cenário e itens malucos.

Marvel vs. Capcom

Marvel vs Capcom -  -

Quando se fala em crossover e videogames, esse é provavelmente o primeiro nome que surge na cabeça da galera. Os games de luta X-Men vs. Street Fighter e depois de Marvel vs. Capcom são responsáveis por renovar a popularidade de uma série de personagens tanto da Capcom quanto da Marvel. Para vários dos jogadores dos anos 90, o game foi a primeira chance de conhecer Máquina de Guerra, Capitão Comando e Stryder, por exemplo. A franquia surgiu nos arcades, mas hoje está disponível em consoles, PCs e até smartphones. E, tudo isso, antes mesmo de qualquer executivo da Marvel sequer sonhar com um filme como Vingadores. Recentemente, os fãs comemoraram a volta de Marvel vs. Capcom 2, um dos melhores da franquia, ao torneio de luta EVO. Nada mal, Capcom!

Professor Layton vs Phoenix Wright

Professor Layton -  -

Em 2012, Capcom e Level 5 resolveram entregar aos fãs o que nenhum deles havia pedido: um game unindo as franquias Professor Layton, do genial professor com sotaque britânico, e Phoenix Wright, o advogado que tem casos resolvidos de forma mirabolante nos tribunais. E não é que o game para o Nintendo 3DS deu certo? Além de ser bastante fiel ao estilo dos dois personagens, a união de quebra-cabeças adivinhados por Layton com a eloquência e os gritos de objeção de Wright rendem um game para lá de divertido.

Mario & Sonic nas Olimpiadas

Mario e Sonic -  -

Protagonistas de uma das maiores rivalidades do mundo dos games nos anos 90, Mario e Sonic se tornaram bons amigos nos anos 2000. Foi na era do Nintendo Wii, mais precisamente em 2007, que a dupla dividiu pela primeira vez a capa de um game. E o responsável por tal façanha —um game da Sega com a presença do encanador bigodudo ao lado do ouriço azul, publicado num console da Nintendo — foi o espírito olímpico. Bem, quase isso, a dupla se uniu pela primeira vez para fazer um jogo de casual sobre os Jogos Olímpicos. E foi durante a Olimpíada de Pequim, em 2008, que as duas marcas encontraram o cenário perfeito para o encontro dos dois mascotes. Desde então, os amigos já se encontraram em outros jogos, e mantêm o espírito olímpico no game Mario & Sonic at the Olympic Games Tokyo 2020, exclusivo para o Nintendo Switch. Apesar de vendas aquém do esperado, é sempre bom ver esses dois ícones juntos, não é mesmo?

Mortal Kombat vs. DC Universe

Mortal vs DC -  -

O inimigo do meu inimigo é meu amigo. Essa é a premissa básica da união entre as franquias Mortal Kombat e DC Universe para um crossover. Com inspiração clara no duelo entre personagens de Capcom e Marvel, o game de luta foi desenvolvido pela Midway Games - responsável, até então, pela franquia de Scorpion, Sub-Zero e mais. A história é bastante rocambolesca, mas agradou os fãs e abriu pano para que Ed Boon e seu time também cuidassem de Injustice, game de luta baseado na graphic-novel da DC.

PlayStation All-Stars Battle Royale

PS All-Stars -  -

Ok, esse não é exatamente o crossover mais bem-sucedido de todos os tempos. Além de uma certa inspiração até descarada em Super Smash Bros., o battle royale com personagens da Sony não tem o mesmo peso das franquias da Nintendo. No entanto, não dá para negar que colocar Nathan Drake para brigar com Kratos e Sackboy seja algo bastante curioso, no mínimo.

Cadence of Hyrule

Cadence of Hyrule -  -

Outra mistura de games totalmente inesperada, Cadence of Hyrule tem uma história curiosa. O mais surpreendente neste caso é que a Nintendo tenha aberto uma de suas franquias mais consolidadas para um time de desenvolvedores indies da Brace Yourself. Acontece que dois dos nomes mais decisivos da empresa japonesa - Shigeru Miyamoto e Eiji Aonuma - ficaram viciados em Crypt of the Necrodancer. Depois de ficar viciada no game, a dupla resolveu conversar com os criadores e foi daí que começaram os papos para um mash-up entre os games. Não é todo dia que o pai do Mario e Zelda liga convidando para um chá.

Kingdom Hearts

Kingdom Hearts -  -

Quando o mundo está em perigo, qualquer amigo pode te ajudar no salvamento. Bem, essa parece ser a lição deixada por Kingdom Hearts, série de RPG da Square Enix já vendeu mais de 30 milhões de cópias. O que torna game tão único é que seu protagonista Sora conta com a ajuda de heróis pouco prováveis como Mickey, Donald e os personagens dos universos da Disney e Pixar. Com um claro apelo infantil, mas cheio de fãs marmanjos por aí, os games fazem questão de enfatizar a temática de amizade e trabalho em equipe, enquanto seus heróis eiam por mundos de animações famosas, como Toy Story e Frozen. A ideia casou tão bem que a franquia ganhou fãs e produtos relacionados de todo o tipo. Afinal de contas, o nome da Disney não foi mencionado à toa, né?

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