Por dentro do devkit e do desenvolvimento do Project Scorpio – Xbox Core
Por dentro do devkit e do desenvolvimento do Project Scorpio
12 de abril de 2017 Lukas Taves Artigos
A Microsoft continua revelando informações a respeito do Project Scorpio, dessa vez a escolhida foi a Gamasutra, para falar dos devkits e da plataforma de desenvolvimento do Project Scorpio.
O ponto mais importante é como a Microsoft está pedindo para os developers lidarem com o desenvolvimento para o Scorpio em diante. A proposta para os developers é bem simples e direta: Desenvolvam seus jogos para Xbox como se fossem fazer para PC, com jogos que saibam se adaptar com hardwares de diferentes níveis de performance. E deixem a parte de otimizar com a gente. Como falamos ao revelar as especificações a Microsoft projetou o Scorpio com muito poder bruto e uma arquitetura bem simples com memória unificada, reduzindo a necessidade de otimizações específicas como acontece no Xbox One aonde developers tem que se preocupar com os limitados 32MB da esram para extrair o máximo do aparelho. Além da força bruta a Microsoft conta com as otimizações que fez no hardware, como por exemplo o co processador DX12, para permitir que sem nenhuma mudança de código os jogos possam rodar bem nos próximos consoles Xbox.
Xbox agora é PC!?
O desenvolvimento de jogos para PC costuma ser bem diferente de consoles porque a plataforma PC suporta uma infinidade de hardwares de diferentes fabricantes e características. Otimizar para todos eles seria impossível e por isso por muito tempo, foi se usado abstrações de hardware genéricas. O developer codifica para um hardware virtual que não existe de verdade, e as fabricantes de peças criam suas versões baseadas nesse hardware virtual. Assim, otimizações são necessárias apenas após incompatibilidade ou problema de performance específico em uma arquitetura. É esse cenário que a Microsoft está procurando trazer para o Xbox, e aparentemente o objetivo foi alcançado.
O Ps4 Pro, um upgrade para o Ps4 lançado no ano passado usou a seguinte ideologia de desenvolvimento: O console usa a mesma arquitetura do PS4 normal porém é mais rápido, dessa forma as otimizações feitas para um console servirão para os dois. E adicionou em seu devkit o Base Mode e o Pro Mode, necessário para que o jogo possa enxergar o poder extra do Pro.
O desenvolvimento para o Scorpio é ainda mais simples. O developer não precisa fazer nenhum esforço. Todos os jogos existentes ou não do Xbox One rodam no Scorpio com acesso completo a toda a performance extra que o Scorpio proporciona. Para ter o seu jogo rodando em 4K a única coisa que o developer precisa fazer é deixar a resolução base livre. A Microsoft chegou até mesmo a convidar as developers a testarem seus jogos de Xbox One rodando no Scorpio antes mesmo de entregar os devkits para eles. E os resultados foram animadores pois em questão de horas os jogos já estavam rodando em 4K nativos no Scorpio com potencial para melhorias gráficas.
A promessa da Microsoft para os developers é que eles não precisam se preocupar e nem ter esforço nenhum em ter seus jogos de Xbox One rodando em 4K nativos no Scorpio com framerate no mínimo igual, mas idealmente mais estável. Pois a mesma fez toda otimização na plataforma e no hardware para permitir isso. A partir desse ponto, se o developer quiser oferecer melhores gráficos no Scorpio, aí obviamente terá trabalho extra, mas a Microsoft aponta que praticamente todos os jogos já estão rodando a 4K nativos no Scorpio com o mesmo ou melhor framerate que no Xbox One, e que terem chegado a esse resultado tão antes do lançamento vai permitir que muitos eles tragam melhorias além da resolução apenas.
Idealmente a Microsoft quer que o desenvolvimento entre Xbox e PC seja unificado. Ao invés de exigir que os developers trabalhem a baixo nível e otimizando o código para cada console específico a Microsoft promete fazer isso diretamente ao portar a plataforma para o console e também a nível de Hardware. Dificilmente nós veremos um Xbox daqui pra frente com decisões de design como a esram, que apesar de que se bem otimizado consegue resultados impressionantes (e os jogos exclusivos da Microsoft estão aí para provar) prejudicam o desenvolvimento pois são necessárias otimizações que específicas para o Xbox One. O objetivo final é chegar bem próximo de ter o exato código no PC, usando DX12, rodando no console de maneira super otimizada, mesmo para o Xbox One, embora nesse caso há algumas considerações devido principalmente a já citada esram, mas também as otimizações para o DX12 que a Microsoft fez diretamente no hardware do Scorpio não estão disponíveis para o ele e pode exigir um esforço extra do desenvolvedor. Mas o próximo Xbox além do Scorpio (e sim, Phil Spencer deixa bem claro que esse próximo console já está em desenvolvimento) deve seguir e possivelmente ir ainda além na mesma ideologia de oferecer o máximo de performance de forma bem simples e direta.
Outro marco importante para a Microsoft, é que eles não mais vão resetar a plataforma de desenvolvimento, igual fizeram na transição do 360 com o Xbox One. Por diversos motivos essa transição atrasou e o resultado foi que a parte de plataforma do Xbox One estava devendo e muito mesmo meses depois do lançamento exigindo muito esforço dos developers para portarem para o console e oferecendo pouca performance. Daqui pra frente toda a plataforma será continuamente aprimorada e os consoles devem ser lançados com uma frequência maior, se aproveitando dessa plataforma, jogos e acessórios existentes.
Por dentro do Devkit do Scorpio
O Scorpio como console, foi projetado com o objetivo da Microsoft de entregar suporte a 4K nativos, mas também ouvindo as developers a respeito do que eles gostaram ou não no design do Xbox One, como por exemplo a esram que foi muito criticada pela necessidade de otimizar o uso dela para alcançar a performance máxima do Xbox One. Com os devkits não foi diferente.
A Microsoft perguntou para os developers quais mudanças poderiam fazer nos mesmos e o resultado está aí na imagem. Na parte traseira (não mostrada) ele é exatamente igual ao Xbox One S, inclusive com a entrada HDMI in. O devkit conta com 5 botões frontais programáveis, para serem usados como atalhos de funções específicas. E segundo rumores, podem estar presentes na versão final também! Além disso ele possui um LCD frontal que o desenvolvedor pode usar para mostrar qualquer informação de performance, juntamente para um botão de navegação que permita alternar a informação demonstrada no LCD, possibilitando aos developers terem informações detalhadas de performance já com a interface final do jogo, sem ter que ficar se preocupando em aonde mostrar essas informações na tela. Além das duas portas USB traseiras, há 3 portas novas frontais. Não foi revelado o tipo delas, nem se esse número será reduzida para 1 na versão final como nos outros Xbox Ones, mas especula-se que o Scorpio venha a ter pelo menos uma porta USB-C frontal para se conectar a headsets VR por um único cabo.
Toda a experiência para developers foi melhorada. O devkit agora se atualiza sozinho após ser ligado e conectado na rede, sem necessidade de intervenção do developer. E como hoje o desenvolvimento primário é feito em PCs e depois testado nos consoles surgiu um grande problema, principalmente para developers como a The Coalition, que desenvolvia o jogo para PC no máximo, inclusive texturas em altíssima qualidade, e enviavam isso para o Xbox One para customizar a qualidade gráfica da versão console.
Para evitar esse problema, a Microsoft adicionou uma nova interface para se comunicar com o PC, capaz de transferir 100GB em 4 minutos. Segundo a Coalition passar o build do PC para o devkit do Xbox demorava até 45 minutos, mas com esse novo cabo a transferência em si não dura mais que alguns minutos. No total leva-se cerca de 7 vezes menos tempo necessário para ter o seu build pronto para testar no Scorpio em comparação a os devkits do Xbox One e S. E as melhorias para a experiência de desenvolvimento não param por aí. Com a chegada do S, eram necessários 2 devkits distintos para testar como o jogo rodava em ambos os consoles, se o developer quisesse aproveitar a pequena performance extra do S em resoluções dinâmicas por exemplo. Com a chegada do Scorpio seriam necessários 3 devkits. Para resolver esse problema O devkit do Scorpio consegue simular a versão retail do Scorpio, Xbox One e Xbox One S, ao mesmo tempo.
Outro recurso muito pedido pelos desenvolvedores foi que a Microsoft se livrasse da entrada de ventilação em cima do aparelho. Pois é muito comum empilharem vários devkits e com o Xbox One e S isso era problemático.
52,8 Teraflops e 192GB de ram GDDR5 numa só imagem
Outro pedido muito popular foi que a Microsoft voltasse a oferecer mais memória RAM nos devkits do que nos consoles vendidos para o consumidor. Isso é bem comum em consoles, mas no Xbox One devido à grande reserva do sistema (3GB), a Microsoft fazia os devkits igual aos que iriam para as lojas (Tipo, literalmente igual), porém com as ferramentas ocupando cada vez mais espaço e principalmente com a possibilidade de analisar a performance de 3 perfis diferentes simultaneamente (Scorpio, S e Xbox One) usar a mesma quantidade de RAM da unidade retail seria de fato inviável. Por isso a Microsoft dobrou a RAM dos devkits para 24GB! Você pode se perguntar se realmente tem a necessidade disso, e a resposta é provavelmente não, porém dobrar a densidade da memória RAM para dobrar a capacidade é uma medida muito mais efetiva que re-projetar a placa mãe para suportar o dobro de memória.
Outra diferença do Scorpio para o seu devkit é a GPU, no Scorpio para consumidores são 4 blocos de processamento, cada um com 11 CUs, porém com um desabilitado em cada grupo(medida para reduzir os custos de produção, pois caso algumas dessas unidades deem defeito o chip ainda pode ser usado) totalizando 40. No devkit as 4 unidades extras são ativadas totalizando 44 CUs e 6.6 teraflops, 10% a mais que o console final. A justificativa para isso vem do que a Microsoft e outros developers observaram: O nível gráfico de um jogo é feito estimando cerca de 2 anos no futuro analisando a capacidade atual do dev e aonde eles pretendem estar quando o jogo lançar. O problema é que uma estimativa muito difícil de acertar em cheio, e errando pra cima é mais fácil chegar no ponto ideal do que errando para baixo. Por sinal, foi assim que Gears 4 (e provavelmente outros como Forza Horizon 3) foram portados para o Xbox One. Eles começaram com a versão PC no máximo e foram vendo onde poderiam reduzir para manter o visual mais próximo dentro da performance desejada. Esses 10% extras permitem então que de cara o jogo tenha mais chances de rodar bem já no início do desenvolvimento permitindo o desenvolvedor se concentrar com a performance final apenas na etapa de otimização.
Esses recursos extras, assim como a memória e processamento superior obviamente não estarão disponíveis caso você use seu Scorpio como um devkit para desenvolver seus jogos e apps. Mas a opção continuará presente no Scorpio e a Microsoft pretende diminuir a diferença entre recursos que um developer usando o seu Scorpio como devkit e um devkit real podem usar (Atualmente no Xbox One jogos feitos no próprio console só podem usar metade do poder de processamento e apenas 1GB de ram).
Xbox daqui pra frente
O Phil Spencer ao anunciar o Project Scorpio na E3 2016 começou falando como era importante para Microsoft fugir do modelo de transições de gerações e como daqui pra frente o Xbox estará "além de gerações". Exatamente o que essas palavras significavam foram motivos de meses de especulações, inclusive de que o Project Scorpio seria o último Xbox como conhecemos mudando para um modelo aonde o Xbox seria simplesmente um PC gamer pela Microsoft.
Na verdade é justamente o contrário. Todas as mudanças que a Microsoft está fazendo permitem a plataforma, recursos e acessórios evoluírem independente de hardware e com isso ela pode lançar consoles com mais frequência. Nós não vamos ver consoles anualmente porque a idéia por trás de consoles ainda é um subsídio por menor que seja para ter o retorno com vendas de software na plataforma. Assim, uma frequência anual de lançamentos não daria tempo para o subsídio ser transformado em lucro para aquele console e do ponto de vista de negócios, não é saudável crescer assim.
Para a plataforma isso é bom porque ao invés de reiniciar a cada console você pode sempre evoluir adicionando features novas, suporte a novos acessórios (como VR e AR). Também é bom para os consumidores que continuam com acessórios e jogos funcionando sem necessidade de comprar versões remasterizadas de jogos que já tem ou controles novos só porque trocou de console.
Do ponto de vista de jogos Phil também explica como não ter gerações pode ajudar. Consoles com ciclos curtos impossibilitam a existência de investimentos como MMOs que exigem um investimento alto e muitos anos até recuperar esse investimento. Consoles como 360 e PS3 que duraram quase uma década "resolveram" esse problema mas em contrapartida seguraram a evolução tecnológica por muito tempo e no final de suas vidas enfrentaram uma estagnação forte praticamente forçando os novos consoles a saírem logo. Outra característica do PC é que como a biblioteca é a mesma, e os jogos já são feitos pensando em diferentes especificações é possível que um usuário que não conseguia rodar o jogo na época de lançamento compre ele depois e desfrute até mesmo de anos. Ou que o developer continue suportando o jogo por muito mais tempo. Segundo o Phil essa venda e suporte a longo prazo é a maior força do PC como plataforma e com eles trazendo a possibilidade do jogo rodar melhor em consoles futuros e uma biblioteca eterna, nós vamos começar a ver o mesmo efeito no Xbox.
Um outro exemplo são jogos denominado cross gen. E Phil cita GTA V como exemplo. Foi um jogo lançado no 360, e que depois foi relançado no Xbox One com gráficos melhores e também mais possibilidades no modo online. E embora muitas pessoas que compraram o jogo no 360 compraram novamente no Xbox One, muitas ficaram sem comprar duas vezes e dividiram a população online atual em que poderiam ter o dobro de pessoas consumindo o conteúdo atual. Daqui para frente no Xbox esse cenário não vai mais existir. No nosso exemplo, quem comprou no 360 teria todos os upgrades da versão Xbox One ao trocar de console sem pagar mais por isso e poderia gastar mais no jogo comprando conteúdo novo e consumíveis. E em contra partida com as vendas duplicadas perdidas o Phil acredita que o potencial de atualizar o jogo para o novo console, relançar uma versão definitiva com todos os dlcs até o momento juntos e/ou suportar outros recursos da plataforma como gamepass tem potencial maior de atrair os novos jogadores da plataforma para o jogo do que depender vender o jogo duas vezes para as mesmas pessoas o que deve dar uma longevidade ainda maior.
Atualmente o suporte ao Xbox One é requerido. No sentido de que, se um jogo for ser lançado para Xbox hoje ele tem que suportar o Xbox One. Na verdade a Microsoft não está forçando os developers a suportarem o Scorpio. Como ele automaticamente roda os jogos do Xbox One melhores sem necessidade de input do desenvolvedor Phil acha que não acha justo forçar esse suporte nos developers menores. E as grandes publishers vão suportar o Scorpio de qualquer jeito porque eles querem o melhor gráfico para atrair mais vendas. Eventualmente o Xbox One não terá mais suporte obrigatório, mas a grande vantagem é que isso não vai continuar impedindo ele de continuar sendo suportado. Assim como jogos de PCs suportam um determinado alcance de hardware e isso varia de jogo a jogo, nós vamos começar a ver isso no Xbox daqui alguns anos quando os sucessores do Project Scorpio estiverem no mercado e alguns jogos não vão mais suportar o Xbox One original. Mas exatamente o momento em que isso acontecer vai ser uma incógnita dependendo de vários fatores inclusive a evolução tecnológica.
Falando se o posicionamento do Xbox como PC bem como a unificação com o Windows 10 é para eventualmente a Microsoft parar de fabricar consoles a resposta do Phil foi bem categórica: Apesar de programas como o play anywhere ou de um eventual portátil (que o Phil admitiu que a Microsoft já projetou várias vezes mas nunca chegou a lançar), que se torna cada vez mais provável quando se tem uma biblioteca única capaz de rodar em diversos hardwares diferentes, o objetivo central é o jogador usando o Xbox para jogar na TV. Devemos pensar nas possibilidades de um Xbox portátil ou um futuro onde podemos jogar todos os jogos de Xbox no PC com Windows 10 como um complemento da experiência Xbox, mas que nesse sentido, o futuro do Xbox como um console para colocar embaixo da TV é não ir para lugar nenhum a não ser a sua TV.