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

Não é para todos, diz criador do Second Life sobre metaverso do Facebook

Mark Zuckerberg em versão avatar durante demonstração dos seus planos para o metaverso - Reprodução/Meta
Mark Zuckerberg em versão avatar durante demonstração dos seus planos para o metaverso Imagem: Reprodução/Meta

Simone Machado

Colaboração para Tilt, em São José do Rio Preto (SP)

04/12/2021 04h00Atualizada em 05/12/2021 19h44

Pioneiro na ideia de um metaverso, Philip Rosedale, criador do game de mundo virtual Second Life, levantou dúvidas sobre os planos do Facebook de criar seu próprio metaverso e alertou que isso é algo que precisa ser minuciosamente estudado para que não haja consequências indesejadas.

Em entrevista ao portal de notícias norte-americano Axios, o idealizador do jogo, febre em meados dos anos 2000 e que se tornou uma forma de viver virtualmente, falou sobre a importância de um sistema de moderação para permitir uma convivência harmônica dos usuários no ambiente online.

Rosedale disse que, apesar de ter trabalhado no formato há duas décadas, sua visão sobre o conceito mudou. Ele acrescentou que a experiência lhe trouxe muito aprendizado sobre ambientes digitais, como o processo de aceitação parcial do público, que mesmo gostando de ter uma vida diferente no virtual, como no caso do jogo, as pessoas geralmente não permaneciam muito tempo dentro dele.

"Acho que o que aprendemos —e um tanto com certa tristeza, pelo trabalho que fiz, devo concordar— é que não é para todos, e talvez nunca seja para todos", disse.

Aparato técnico pode excluir pessoas

Outra observação feita por Rosedale é com relação às barreiras de entrada ao sistema. Hoje, para ar ao metaverso da Meta é preciso usar óculos de realidade virtual (RV), embora a empresa já tenha dito que pretende integrá-lo aos programas existentes.

Isso tudo vai exigir que os internautas tenham um aparato técnico como internet rápida, óculos de RV e computador com boas configurações, o que seria inviável para algumas pessoas.

Consequências reais para quem abusar do virtual

Na entrevista, Rosedale destacou também a importância de proteger as pessoas ao identificá-las e garantir consequências as ações tomadas no mundo online, pois somente assim elas se comportarão de forma correta.

Segundo ele, a internet ainda não tem sistema de identificação para a realização de um monitoramento eficaz das atitudes dos usuários, fator que pode se tornar um problema — não é preciso ir longe para ver o grave problema dos discursos de ódio e fake news sendo disseminados pela internet.

Por fim, o criador do Second Life, afirmou ainda há outra questão a se pensar: os avatares. Na opinião dele, nem todos os usuários querem se apresentar como um desenho animado.

Cuidadosamente otimista

Apesar de lançar várias dúvidas sobre o metaverso, Rosedale relatou também estar otimista com o futuro dos mundos virtuais e a forma com que as pessoas vão interagir nesse universo.

"Você pode ser capaz de criar um espaço público que pode ser uma coisa positiva para as pessoas —onde você pode ir e fazer novos amigos, onde você pode gritar sobre a injustiça", acrescentou durante a entrevista.

Second Life

O jogo, febre há duas décadas, mas ainda disponível para quem quiser, consiste em uma plataforma online em que os jogadores criam avatares e uma "vida" no mundo virtual. A plataforma chegou a registrar a marca de 1 milhão de usuários mensais.

No jogo, os visitantes podem socializar com amigos, conhecer os arredores, comprar terrenos virtuais, ir a shows, promover desfiles de modas e até mesmo aceitar empregos como artistas, políticos ou professores.