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

"Concrete Genie" cria vida através da arte e da crítica ao bullying

Concrete Genie - Divulgação
Concrete Genie Imagem: Divulgação

Makson Lima

Colaboração para o START

09/10/2019 04h00

O autointitulado "menor estúdio dentro da Sony", PixelOpus, já havia mostrado seu potencial com "Entwined", de 2014. Porém, a história do pássaro e peixe apaixonados, separados por uma existência e unidos por metamorfose, não mostrou tanto potencial assim. Foi mais uma experimentação, um "olá" para o mundo.

Dito isso, "Concrete Genie" chega bastante ambicioso em ideia e proposta, mas nem tanto assim em execução. Temas complexos como bullying e violência familiar têm bastante espaço no meio indie, basta olhar para "Papo & Yo", "Night in the Woods" e "The Cat Lady", só para citar alguns. No caso do novo game, ele incorpora isso ao seu lado mais chamativo: a arte como catarse.

Ash e seus amigos mágicos

O enredo de "Concrete Genie" é simples, mas que cativa: na fictícia cidade de Denska, problemas ambientais e governamentais afastaram os turistas, a alegria das pessoas e as cores dos prédios, ruas e becos. É nesse ambiente taciturno que vive o introspectivo e criativo Ash, que prefere o mundo imaginário de seus cadernos de desenho à vida real. E isso incomoda demais outras crianças do bairro.

Em um ato de covardia, os brigões machucam Ash e rasgam seu caderno, espalhando as folhas ao vento. Em meio a essa tristeza, o garoto faz amizade com Luna, uma de suas criações que tomou forma nas cavernas do velho farol de Denska.

Concrete Genie 02 - Reprodução - Reprodução
Luna é a criatura que dá a Ash seu super-pincel
Imagem: Reprodução

"Concrete Genie" é, em cada pixel, o filme "Onde Vivem os Monstros", mas como se Max fosse um pouquinho mais velho. Do design dos monstros (aqui, gênios), como tomam forma e interpelam as atitudes do protagonista, fica clara a inspiração da PixelOpus. E ela não é a única, porque "Jet Set Radio" vem à mente quando Ash parte em sua jornada de reconstrução da cidade, muro a muro, e de autoconhecimento também.

Página a página, bairro a bairro, as opções aumentam e as capacidades do pincel mágico do garoto, criado por Luna, também. É como se Amaterasu, de "Okami", tivesse no mundo sua tela em branco, e pudesse criar, sem julgamento, uma existência mais viva e menos triste.

Concrete Genie Wall - Divulgação - Divulgação
O mundo fica mais colorido e alegre com a arte de Ash
Imagem: Divulgação

Falar de julgamento numa história sobre bullying pode nos levar por caminhos um tanto quanto pantanosos, mas não é o caso. Foi deliberado por parte de seus criadores a decisão de não dizer como, só apontar os caminhos. Ou seja, sua arte no muro daquela fábrica de enlatar sardinhas não será melhor que a minha ou a de ninguém, mas sim a sua arte. Só é preciso fazer a vontade dos gênios, para que o contrário também aconteça.

Criatividade no grafite

Enquanto foge dos babacas brigões, escalando pelos telhados num esquema um tanto Nathan Drake, de "Uncharted", Ash cria novos gênios que, com o tempo, assumem diferentes capacidades elementais. Criaturinhas na mochila do artista, como a de fogo, Manchão, servem de base na criação de diferentes gênios nas paredes. Foi aqui que ei mais tempo inventando, enchendo meus gênios de chifres, caudas e bigodes.

Os gênios percorrem esse mundo bidimensional a mando do pincel, até interagindo com a realidade do lado de cá, numa quebra de parede dentro dos domínios de Denska. Um gênio com capacidades elétricas pode acionar um mecanismo específico, por exemplo. É até simples demais, o que faz pensar que "Concrete Genie" foi desenvolvido para ser a primeira experiência com videogame de alguém. Nesse sentido, ele pode ser uma bela porta de entrada.

Enquanto foge dos babacas brigões, escalando pelos telhados num esquema um tanto Nathan Drake, de ''Uncharted', Ash cria novos gênios que, com o tempo, assumem diferentes capacidades elementais

Para livrar a cidade de pragas mais perigosas, Ash precisa de supertinta. Para isso, é imprescindível agradar ao gênio, o que exige entrar no modo pintura e, com o destrambelhado sensor de movimento do DualShok 4, pintar aquilo que o monstrinho quer: de flores até uma foqueira e, quem sabe, um pouco de cócegas com o pincel, para aumentar o vínculo entre criador e criatura.

Acender as luzes da cidade também faz parte da jogabilidade, assim como acionar os superpoderes do pincel para limpar aquela vizinhança de vez: É a obra-prima de Ash, sua magnum opus, por onde Luna transita, levando a uma nova área.

O que começa fascinante, porém, cansa um pouco com o tempo, já que o jogo não faz muita questão de se reinventar, surpreender. O game parece ter certeza de si, o que é bom até certo ponto. Nem mesmo dar vida nova a outdoors ou momentos específicos dos gênios, que acabam servindo como colecionáveis nessa aventura semiaberta, impulsionam a algo a mais.

O que começa fascinante, porém, cansa um pouco com o tempo, já que o jogo não faz muita questão de se reinventar, surpreender

Pego a animação do rosto dos personagens como exemplo. O estilo stop-motion cria um efeito legal, mas que não conversa com o restante. Me fez pensar num jogo da ACE Team, "The Deadly Tower of Monsters": esse, sim, uma ode a esse estilo de fazer animação, homenageando o grande e inesquecível Ray Harryhausen. "Concrete Genie" é mais fundamental nesse aspecto, mesmo que numa embalagem bonita.

Os capítulos finais até tentam subverter a ideia, só não se saem muito bem, acabando por abraçar, de vez, o convencional.

Esboço em realidade virtual

Concrete Genie VR - Divulgação - Divulgação
Modo em Realidade Virtual é bem dispensável
Imagem: Divulgação

"Concrete Genie" foi adiado para que um modo específico de realidade virtual pudesse ser incorporado ao jogo final. Gerou antecipação e isso, normalmente, é porta de entrada para decepção. Pois é. Partir para "Concrete Genie" com o PSVR em mente não é uma boa ideia, pois trata-se de algo absurdamente complementar à experiência principal, mais convencional, e é bom que isso seja dito com todas as letras.

Na história de Manchão, transformamos arte 2D em 3D. Adentramos a tela que, no caso, são as paredes de uma caverna repleta de cristais. É bonito, assim como o modo de pintura livre pelos bairros de Denska, mas nada além disso. Levando em consideração o quão criativo o jogo se esforça tanto para ser, dispensar um pouco mais de cuidado e atenção ao VR poderia tornar "Concrete Genie" indispensável.

Há uma mensagem poderosa aqui, e que pode conversar diretamente com crianças e adolescentes, e espero mesmo que isso aconteça. Agora, enquanto videogame, "Concrete Genie" deixa claro o quanto é necessário se reinventar nos fundamentos mais básicos da mídia, ousando ao abrir mão de convencionalismo, porque uma embalagem lindíssima, a nova produção da PixelOpus certamente tem.

Concrete Genie capa - Divulgação - Divulgação
Imagem: Divulgação
Lançamento: 8 de outubro de 2019
Plataformas: PlayStation 4
Preço sugerido: R$ 119,90
Classificação Indicativa: Livre (Violência)
Desenvolvimento: PixelOpus
Produtora: Sony

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