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

Mortal Kombat: produtor quer criar universo cinematográfico com novo filme

Mortal Kombat filme - Divulgação/Warner Bros
Mortal Kombat filme Imagem: Divulgação/Warner Bros

Rodrigo Lara

Colaboração para o START

17/03/2021 12h00

Um novo filme de Mortal Kombat está prestes a estrear, em 15 de abril, e após conversar com o diretor Simon McQuoid e o produtor Todd Garner, uma coisa ficou clara: esse é apenas o primeiro episódio daquilo que deverá ser uma série de produções.

Eles querem fazer com Mortal Kombat o que a Marvel fez com Vingadores e, talvez, tirar de vez a estigma de adaptações ruins de games para o cinema.

Se esse é o primeiro filme de uma saga maior, estaríamos diante do início de um MKCU (fazendo alusão ao "MCU", o universo cinematográfico da Marvel)?

A resposta é um provável sim.

Olhamos com muito cuidado para criar um universo que possa ser explorado em mais de um filme e com mais profundidade
Todd Garner, produtor de Mortal Kombat

Novo protagonismo

É praticamente inevitável falar de filmes baseados em games e não citar "Mortal Kombat", que chegou aos cinemas em 1995. Seja por sua música tema altamente grudenta ou por ser, até certo ponto, fiel à história do game.

Já o novo MK não deve se prender tanto assim às obras originais, como explica o produtor

Nós não usamos um game específico como base e, desde o início, queríamos fazer algo maior do que apenas um filme
Todd Garner, produtor do filme

Outro ponto que fez fãs mais assíduos da série ficarem em alerta foi a decisão de incluir um personagem inédito no longa, que será o protagonista.

O novato é Cole Young, um lutador de MMA cuja origem está ligada a um personagem clássico da série - sem aprofundamentos desnecessários aqui -, que deverá funcionar como uma ponte entre espectadores não-iniciados no universo de Mortal Kombat e toda a mitologia da franquia.

Perguntado sobre o quão arriscado seria apresentar um novo personagem nessa situação, especialmente em uma série que a longe de ter uma carência nesse quesito, Garner foi enfático.

"Quando você jogou Mortal Kombat X você se incomodou com os novos personagens?", perguntou.

Diante de um "não" como resposta, o produtor continuou:

Ter um personagem novo nesse papel de protagonista também permite que figuras clássicas da franquia sejam mais fiéis às suas personalidades, sem que haja necessidade de adaptações. Nós somos incapazes de atender a todos os desejos dos fãs, mas a nossa meta é atender à maioria deles. Ninguém deixou de gostar dos jogos que tinham novos personagens, por exemplo. Acredito que esse não será um motivo para os fãs da franquia se irritarem
Todd Garner, produtor de Mortal Kombat

Finish him!

É natural que um filme que tem como inspiração uma série de games famosa por sua violência traga pitadas generosas desse ingrediente sangrento.

Aqui, uma boa notícia: é bem provável que vejamos tanto golpes quanto fatalities clássicos no longa - em um trailer é possível ver Kano arrancando o coração de um oponente, por exemplo.

O diretor Simon McQuoid fez uma ressalva interessante sobre esse tema.

Ter a possibilidade de usar a violência no filme é algo que o torna mais autêntico, mas é preciso lembrar que ela [a violência] é apenas um dos aspectos de Mortal Kombat. Eu entendo que os personagens e suas histórias complementam esse universo. Isso não quer dizer que fugimos da violência. Apenas tivemos um grande cuidado para que ela se encaixasse dentro da estética do filme, sem desbalancear ou soar apelativo

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