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

xCloud: 'Jogar na nuvem não substitui videogame', diz Microsoft

Bruno Izidro

DO START, em São Paulo

04/10/2021 17h38

O Xbox Cloud Gaming (antes conhecido como xCloud) enfim chegou ao Brasil. Ele ainda está em fase beta, mas já disponível para todos que assinam o Xbox Game Ultimate.

O recurso possibilita jogar games de Xbox no celular, em tablets e no PC pela tecnologa da nuvem, sem precisar do console. Apesar dessa independência, a Microsoft não vê o serviço como um susbtituto total dos videogames e PC. Pelo menos não ainda.

Foi isso que nos falou Kareem Choudhry, vice presidente de Cloud Gaming da empresa:

(O Xbox Cloud Gaming) é uma adição a forma de jogar no Consoles e PC. Nós não estamos tentando substituir o que já fazemos nessas plataformas, isso é mais um complemento

Com o Xbox Cloud Gaming, os saves dos jogos também ficam guardados na nuvem, o que permite continuar o game que começou no celular do mesmo ponto quando for jogar no Xbox Series S, por exemplo, e vice-versa.

Xbox Cloud Gaming, serviço de jogos pela nuvem da Microsoft - Divulgação/Microsoft - Divulgação/Microsoft
Com Xbox Cloud Gaming é possível jogar no celular, tablet e PC
Imagem: Divulgação/Microsoft

Talvez por todas essas características é que o Xbox Cloud Gaming não seja um serviço próprio, que poderia ter uma mensalidade. Ao invés disso, ele faz parte dos benefícios do Xbox Game Ultimate, e sem custo adicional.

O recurso também se beneficia ao usar o catálogo de jogos já disponível no Game . Nessa nova fase beta, são mais de 200 games que podem ser jogados via nuvem, indo de exclusivos do Xbox, como Gears 5, até sucessos indies como Hades.

Nuvens Azure

Há ainda um gargalo que é comum quando falamos de tecnologia na nuvem: a infraestrutura de internet no Brasil.

A Microsoft informa que, para jogar usando o Xbox Cloud Gaming, é preciso uma conexão de, pelo menos, 20 Mb de e de dados, além de Wi-fi 5 GHz para jogar no celular.

Esses são especificações podem não ser a realidade em muitas partes do Brasil, e não é a toa que outros serviços parecidos de jogos, como o PlayStation Now e Google Stadia, sequer cogitaram vir para o país.

O time de Xbox Cloud Gaming, porém, parece ter uma arma para combater isso: o Azure.

Kareem Choudhry, executivo de Xbox Cloud Gaming - Divulgação/Microsoft - Divulgação/Microsoft
Imagem: Divulgação/Microsoft

Esse é o tipo de situação em que nós, do time de Cloud Gaming, não precisamos resolver sozinhos, porque fazemos parte de uma estrutura maior que é a Microsoft, que vem trabalhando pra construir o Azure no Brasil. Por isso nós colaboramos com eles
Kareem Choudhry, vice presidente de Cloud Gaming

Azure é uma plataforma da própria Microsoft, com o intuito de executar aplicativos e serviços pela nuvem.

No Brasil, segundo o próprio site da Azure , existem dois datacenters: em São Paulo e no Rio de Janeiro, e é por meio dessa infraestrura que o Xbox Cloud Gaming se apoia para funcionar bem por aqui.

Foi por isso também que a Microsoft realizou um período de preview do Xbox Cloud Gaming aqui no Brasil, em novembro de 2020.

É preciso muito trabalho para a tecnologia funcionar, e foi exatamente por isso começamos com um preview no Brasil, porque queríamos testar a infraestrutura de rede, como ela se interage com as centrais de dados do Azure e como podemos otimizar os servidores no Brasil

Catherine Gluckstein Xbox Cloud Gaming - Divulgação/Microsoft - Divulgação/Microsoft
Imagem: Divulgação/Microsoft

A declaração é da chefe de produção e estratégia do Xbox Cloud Gaming na Microsoft, Catherine Gluckstein.

Além disso, a procura pelo serviço foi tamanha que ela informou que o número de servidores do Xbox Cloud Gaming agora na fase beta foi expandido para o país.

Mas será que tanto esforço valeu a pena? No podcast Game Trends desta semana falamos as nossas experiência com o Xbox Cloud Gaming: o que está bom, o que está ruim e se o recurso pode mesmo vingar por aqui. Ouça:

Os podcasts do UOL estão disponíveis em uol.com.br/podcasts e em todas as plataformas de distribuição de áudio. Você pode ouvir Game Trends, por exemplo, no Spotify e no Youtube ou assinando o nosso feed.

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/startuol