Cloud… Afinal são servidores dedicados. E isso explica tanta coisa!

Incrivel como umas palavras podem criar tanta confusão. Mas agora na E3, a Microsoft clarificou todo o conceito de “Cloud” ao substituir o termo por “Servidores Dedicados”. E finalmente a coisa parece fazer sentido.

xbox-one-cloud-powered

A Era Pré-Phil Spencer

Como foi comum com a Xbox One, a Microsoft entrou com o pé esquerdo quando se referiu à sua Cloud.

Como hão-de compreender se disserem a um nativo que “Voaram do vosso país para ali”, caso este possua capacidade para executar um raciocínio ele vai-se aperceber que estão a mentir. Afinal nenhum homem voa, e nós somos apenas homens. Daí que só quando explico que quem voou foi um avião, um aparelho construído, em tudo igual a um carro, mas que é capaz de se impulsionar pelos céus, e que me transportou até ali é, que a coisa faz sentido.

E a Microsoft optou por um diálogo desse género. O Poder da Cloud! Algo que será capaz de transformar a Xbox dando-lhe a potência adicional de várias  Xbox 360, ajudando no seu processamento e permitindo-lhe fazer aquilo que não seria possível de outra forma.



Mas explicar como isso aconteceria… é que não aconteceu. E tal como o nativo pensou de forma lógica, tambem muita gente o fez e referiu que o que a Microsoft propunha, auxiliar a computação local da consola, era impossível.

A Era Phil Spencer

Mas eis que Phil Spencer toma o controlo do departamento Xbox e a mensagem da Microsoft começa a tornar-se mais clara. A empresa passa de uma “cambada de arrogantes” que pretendiam implementar à viva força uma ideia para uma empresa que ouve o cliente e que desenvolve aquilo que ele quer.

E começamos a ver a Cloud a funcionar! Curiosamente de uma forma bem inferior à que era esperada e passada pela antiga imagem deturpada, mas a funcionar.

Ora com dois títulos já a usar a mesma, um para IA e outro para física, percebemos que há algo de comum entre ambos. A forma como ela funciona em TitanFall e como foi explicada funcionar em CrackDown é basicamente a mesma: Um servidor dedicado com cálculos de elementos comuns ao mundo.

Mas não era isto que a Microsoft tinha dito. O que ela referia era algo bem aparentemente mais complexo, algo que seria mesmo impossível.

Mas curiosamente na apresentação da E3 da Microsoft teve uma particularidade: Nem uma única vez se usou o termo Cloud! Em compensação o termo Servidores Dedicados foi referido várias vezes.



Ora pelo que foi visto até agora, e após alguma pesquisa, o que nos parece claro concluir é que afinal o Cloud Computing da Microsoft não é verdadeiramente nada de novo, apenas algo que pretende ser inovador e levar o que já existe a um novo patamar. O funcionamento é mesmo esse, à base de servidores dedicados, a fazer aquilo que um servidor sempre fez, mas com componentes mais elaboradas.

E é aí que o trabalho da Microsoft para a Cloud reside: no aumento da capacidade de processamento remoto e no aumento do volume de dados inerente entre o servidor e o cliente, sem prejudicar o tempo de resposta do servidor, aumentar a latência, ou aumentar grandemente os volumes de tráfego.

E se para o tipo de funcionamento que se supunha prometido, havia tremendas dificuldades técnicas que pareciam tornar a implementação da situação algo impossível, servidores dedicados a calcular física e IA é algo que na prática existe desde sempre. Por exemplo Battlefield 4 possui turretas anti aéreas que não são controladas pelos humanos, mas sim por uma IA, e o jogo possui várias componentes de física calculadas do lado do servidor. Ou seja, estas não são verdadeiras novidades em jogos online, e aliás a maior parte da física em jogos multi jogador é calculada no servidor.

Os motivos são simples: Sempre que há um disparo de uma bala todos os jogadores tem de ter a mesma trajectória para a mesma. Sempre que há uma explosão todos os jogadores tem de ser afectados da mesma forma. Sempre que algo é projectado, todos tem de ver a mesma coisa.

Mas infelizmente a física não se vai comportar da mesma forma em todos os computadores. A física não é forçosamente determinística e os parâmetros da simulação podem variar de máquina para máquina. Isso quer dizer que mesmo que cada cliente calcule a sua física, os cálculos tem necessariamente de ser controlados de forma a se obter confirmações e manter todo o jogo em sincronia. E especialmente quando se quer libertar os clientes do encargo da física, que melhor sítio para a colocar do que o próprio servidor?



A comprovar que servidores a correr física existem à vários anos, trazemos aqui três comprovativos desse facto, a começar  por uma questão de 2013 colocada por um programador no forum de apoio do motor Unity e que parece adequar-se na perfeição para se compreender e explicar aquilo que a Microsoft está a fazer.

Bem, tenho o meu jogo a correr com 3000+ corpos rígidos de forma perfeita e agora é tempo de pensar no multi jogador. Alguem sabe de uma boa forma de tornar um jogo com 3000+ corpos rígidos e 700 blocos não dormentes multi jogador?

Estava a pensar em fazer toda a física no cliente e o servidor controlar as posições dos jogadores e quando eles disparavam, pelo que a largura de banda seria mínima.

A resposta oficial é a seguinte. E só vou colocar a parte que nos interessa, sendo que podem ver a resposta toda caso sigam o link de cima.

Não há uma resposta simples uma vez que não é uma pergunta simples. A única resposta verdadeira que pode ser dada é “depende”…

Se não estás preocupado em ser autoritário, i.e. se confias que os jogadores não vão fazer batotas, podes correr a física nas máquinas dos clientes, e tirar o peso do servidor. Podes escolher um jogador para possuir a física autoritária e arranjar uma forma de controlar as divergências entre os teus utilizadores. Se queres que a física seja baseada em mais do que um utilizador isso vai requerer mais comunicações (mais do que uma-a-mais terás mais-a-mais sincronias)

Se ser autoritário é importante, terás então de correr tu a física, no servidor. A forma mais simples é correr uma copia do Unity com o mesmo jogo e estado em que os jogadores estão e deixa-lo ter a palavra final na física. Alternativamente podes instalar o PhysiX para correr sem o Unity, usar outra solução de física, ou escrever os teus próprios cálculos de física que correrão em Java ou outra linguagem.

A parte seguinte fala que um volume de dados elevado que, devido à presença de tantas componentes complexas, cria situações incomportáveis. E é aqui neste campo que o trabalho da Microsoft reside, sendo neste campo realmente inovador, ao conseguir aumentar a informação sem aumentar a latência e sem exigir grandes volumes de tráfego, está a querer inovar. E este é o motivo porque demos destaque a esta pergunta, por se adequar tão bem à realidade.

Seja como for, terás de comunicar a informação a todos os jogadores na rede. E aqui terás dois problemas:

  • A Latencia: Na altura em que física chega ao jogador poderá estar ultrapassada
  • A largura de banda: Enviar a posição e rotação de 3000 objectos ocupará pelo menos 72 Kb por frame, o que a 30 fps requer 2.1 MB por utilizador, assumindo não haver compressão.

A resposta curta é: Não é possível mandar-se tanta informação pela rede. Provavelmente terás de chegar a uma solução que vai interpolar ou extrapolar (para compensar a latência), e mandar dados menos frequentemente, mais como uma correcção do que uma driver de física, por exemplo, deixar o utilizador local calcular a física e, de forma rudimentar mandar-lhe correcções de vez em quando para quando a sua física foge do que é autoritativo..

Tenho de referir que esta é uma tarefa monumental que mesmo profissionais lutam com ela, e é por isso que as pessoas que desenham servidores são bem pagas.

Ou seja, é nesta componente que a Microsoft está a apostar e a inovar, ao apresentar não 3000, mas mais de 50 mil objectos com corpo e animados a actuarem de acordo com a física do jogo (de acordo com a demo mostrada), e todas elas devidamente sincronizadas. Uma tarefa completamente executada do lado do servidor que na prática não retira verdadeiramente nada que já não se retire em menor escala do processamento local, apenas melhora, e muito (com grande enfase), a dimensão da intervenção, e os resultados.

Deixo porém aqui outras questões comprovativas da aplicação de física em servidores já de 2012, e  uma notícia de 2011 sobre a implementação do Physix da Nvidia em servidores que podem ler aqui .



O que queremos que compreendam desta resposta é que efectivamente física calculada no servidor não é novidade nenhuma (Battlefield 4 até calculava a física da erva no servidor, algo que depois desligou por usar demasiados recursos). Assim como IA calculada num servidor também não o é. Isto é efectivamente Cloud Computing, mas algo que sempre existiu sem ser apelidado por esse nome, e que é devidamente e meritóriamente agora melhorado pela Microsoft. No entanto o resultado não é aquele que estava sub-entendido nas palavras iniciais da Microsoft: Uma computação na Cloud capaz de interferir e ajudar no processamento da consola, pois o que se passa é apenas online, em servidores dedicados e em jogos onde vários jogadores em simultâneo podem partilhar a física que acontece para todos.

Mas como surgiu então toda esta confusão?

Bem, em Setembro de 2013 a Microsoft explicou de forma exacerbada o seu conceito de Cloud (sim, extrapolou, criando a ilusão de mundos e fundos, algo que nessa altura estava a ser prática corrente na secção Xbox). E curiosamente essas afirmações surgem após o Engenheiro da PS4, Mark Cerny ter afirmado que “Tentar melhorar a qualidade dos gráficos não funciona bem na Cloud” e que assim sendo, a PS4 também já trabalha com a Cloud.

Ora lendo as palavras da Microsoft o que vemos é exactamente contraditório ao que Mark Cerny diz. A Empresa refere claramente que a Cloud permite “melhores gráficos” e “melhor luz“. Ora se assim fosse, interferir com grafismo seria uma coisa completamente nova: Seria um processamento na Cloud inovador, mas algo que na cabeça de qualquer pessoa que tenha um pouco a noção das latências da Internet, imediatamente tinha de ser apelidado de impossível.

Para quem não seguiu o primeiro link de cima, eis as frases completas referidas pela Microsoft em Setembro de 2013 na Eurogamer Expo e pela boca do seu Vice Presidente Corporativo, Phil Harrison:



É também sobre processamento da Cloud  e IA. Isto é onde algum do esforço computacional de um jogo pode ser descarregado para CPUs dedicados na Cloud, para fazer a vossa experiência de jogo melhor, melhores gráficos, melhor iluminação, melhor física.

Isto é um exemplo de onde pensamos que a Cloud chegará empurrando a próxima geração de desenvolvimento de jogos para novas formas de criatividade, que farão a experiência ainda melhor.

As palavras de Phil Harrison deram a entender ao mundo um tipo de Cloud Computing bem diferente do visto até agora em CrackDown e Titanfall. Um mundo onde a Cloud interferia no processamento directo da consola, no grafismo e na luz. Um tipo de processamento que era bastante mais do que um mero servidor dedicado para jogos multi jogador, mas sim um auxiliar capaz de interferir e ajudar em tempo real o processamento da consola, fosse ele derivado do CPU ou GPU. E não necessariamente apenas em jogos multi-jogador.

Mas agora com Phil Spencer este tipo de sensacionalismo desaparece e um recente artigo da Eurogamer toca igualmente nesta situação: A forma curiosa como a Microsoft  subitamente deixou de falar de Cloud para insistir no termo “servidores dedicados”.

E dele citamos um pequeno trecho curioso e que deriva de uma análise à anterior demo apresentada de cálculos de física na Cloud e que agora sabemos ter sido trabalho inicial de CrackDown:

Apenas vimos uma amostra do que é possível para além dos jogos Multijogador, com os Drivatar e os Grunts de Titanfall. O protótipo de Crackdown é um grande exemplo daquilo em que a Cloud se deve superar – tirar cálculos complexos da consola para onde os adicionais 100 ms ou algo assim de latência de e para o datacenter não afectem verdadeiramente a jogabilidade. A cloud não trata de bottlenecks gráficos, mas aqui demonstra como a simulação de uma cena complexa pode ser stressante no CPU – uma área onde a PS4 e a Xbox One ficam atrás mesmo de processadores meio de gama para PC.

Então como ficamos? Se não há intervenção gráfica certamente as palavras de Phil Harrison foram mal interpretadas (ou, mais provavelmente, exacerbadamente usadas). E o certo é que, por aquilo que se parece entender agora, foram mesmo!

Dados os timmings das intervenções de Cerny e Spencer, a imprensa foi de certa forma levada a pensar que o Cloud Computing seria muito mais do que aquilo que é. E devido a isso escreveram-se artigos e artigos referindo que o conceito de Cloud da Microsoft era impraticável. E realmente, face ao subentendido, era! Daí que eu próprio escrevi alguns.



Mas na realidade a percepção daquilo que é o conceito de Cloud para a Microsoft está a ficar cada vez mais claro. E dado que o que ela faz não é mais do que optimizar algo que já existe, de forma a o levar a um outro patamar até agora não atingido, torna-se claro que a Cloud como auxiliar da Xbox One afinal não é uma ideia tão estapafúrdia como se supunha ser.

É na realidade algo bem palpável, algo bem real, que até já existe em menor escala, e que estamos muito, mas mesmo muito curiosos por ver em acção na escala bem superior que a Microsoft pretende implementar. E tendo-se percebido este conceito, apesar de parte dos problemas técnicos continuarem a ser uma realidade, ele são bem menores, e não estamos a ver porque motivo a Microsoft não há-de conseguir levar esta tarefa a bom porto.

Ou seja, a Cloud na Xbox One será uma realidade sim senhor. E poderá permitir atingir patamares que antes não eram possíveis! Infelizmente a mensagem da Microsoft foi é mal passada, e só agora, com Phil Spencer, se começa a perceber exactamente como a coisa vai funcionar. E a Microsoft não está a querer re-inventar a roda como se pensava e duvidava, está apenas a torna-la mais redonda para permitir o que antes não era possível.

 



error: Conteúdo protegido