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

Como Spiritfarer me ajudou a lidar com o fantasma do Alzheimer de meu avô

Reprodução/START
Imagem: Reprodução/START

Makson Lima

Colaboração para o START

20/09/2020 04h00

Meu primeiro contato com Spiritfarer foi por meio de um trailer numa E3 ada, e a mensagem contida ali permaneceu comigo até a chegada do jogo. A simples ideia de lidar com pessoas —ainda que representadas por animais antropomórficos mas ainda assim, pessoas— após sua morte, como num rito de agem entre existências, acalentando e reconfortando essas almas, me pareceu extremamente difícil, mesmo com aquele visual tão belo e convidativo.

Difícil porque, afinal de contas, todos já lidamos com a perda de alguém próximo, alguém querido. A verdade é que eu não estava preparado para Spiritfarer.

Spiritfarer 1 - Reprodução - Reprodução
Imagem: Reprodução

Todo esse tempo entre aquele trailer e, de fato, entender as motivações de Stella, a Barqueira dos Espíritos, seus afazeres e compromissos para com as almas ageiras daquela embarcação, foi um prazer. Tudo estava sob controle até conhecer uma doce senhora ouriço de nome Alice.

A partir daí, foi uma construção dentro de mim. Ou reconstrução, ainda não sei dizer ao certo, e aqui é o momento difícil deste texto: abrir meu coração, com olhos marejados.

Há anos, e por anos, meu avô foi vítima da Doença de Alzheimer. Não existe cura, e trata-se de um transtorno neurodegenerativo em que fragmentos de proteínas tóxicas se alojam entre neurônios, em especial nas regiões cerebrais do hipocampo e córtex. É aí onde reside nossa memória e raciocínio. É aí que somos o que somos. Sem essas partes tão específicas do cérebro em pleno funcionamento, deixamos de ser. A personalidade e toda bagagem de vida definham.

Spiritfarer 2 - Reprodução/Makson Lima - Reprodução/Makson Lima
Imagem: Reprodução/Makson Lima

Alice, a senhora ouriço de Spiritfarer, faleceu de Alzheimer, assim como meu avô. É bastante difícil explicar o que é conviver com alguém vítima dessa doença, alguém que fez parte de sua vida de forma tão íntima e que, como num piscar de olhos, esquece quem é você, esquece quem é, o que é. Stella, em vida, foi uma enfermeira. Descobrimos no decorrer do jogo que Alice foi sua paciente e também sua primeira perda nessa profissão tão difícil. De forma extremamente delicada e respeitosa, descobrimos como Alice se foi, e como suas memórias estão confusas e embaralhadas em sua mente doente.

Primeiro, foi assim: "Alice é bem idosa e tem tido dificuldade em chegar até sua casa - você poderia construí-la mais próxima à proa?" foi o que me pediu Astrid, uma mulher representada por uma lince cujo ado se misturou com horrores de guerra. Depois, foi se agravando, pois ela sequer conseguia se locomover. Por fim, o esquecimento completo. Quem é você? Minha filha? Quem é Stella?

Nesses breves, porém impactantes, diálogos, eu simplesmente desabava enquanto jogava. Ou quando precisei vestir as roupas de sua filha Annie, o que talvez tenha sido o momento mais difícil de todos. Por anos, tive pesadelos com meu avô transformado, com sua forma desfigurada, assustado com estranhos —sua própria família— ao seu redor. Não há nada que possa preparar alguém para isso. Muitos anos após sua partida, os pesadelos foram se tornando mais raros, mas ainda acontecem eventualmente.

Spiritfarer  - Divulgação/Thunder Lotus - Divulgação/Thunder Lotus
Imagem: Divulgação/Thunder Lotus

Jogar Spiritfarer, em especial a jornada de Alice, foi como assistir a Amor, de Michael Haneke, talvez o mais difícil dos filmes que já vi até hoje. Os terrores pessoais, construídos dentro de nós, são desfragmentados com o ar da vida, o tratamento advindo através de terapia ou numa canalização artística. Quando soube que Alice era uma personagem inspirada na avó de um dos criadores do jogo, tudo fez ainda mais sentido.

Alice, assim como meu avô, ou a existir dentro de mim através de minhas memórias mais recentes. As mais terríveis. Só coube a mim mesmo lidar com isso e transformá-las em toda vida que veio antes de a doença chegar. É ali que quero guardar meu avô. E tenho certeza que foi ali onde Stella guardou Alice, e sua filha Annie também.

Obrigado, Spiritfarer, por me ajudar a lidar com o fantasma do Alzheimer do meu avô.

Spiritfarer 3 - Divulgação - Divulgação
Imagem: Divulgação

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