A evolução da Xbox One - como dito pelas fugas de informação do SDK
19 meses de engenharia abrangendo a ascensão e queda do Kinect e um foco revisto sobre o desempenho dos jogos.
As recentes fugas de informação das ferramentas de desenvolvimento da Xbox One - juntamente com a documentação que a acompanhou - deu-nos uma fascinante visão sobre a criação e evolução da mais recente consola da Microsoft. As inovações mais recentes, tais como o lançamento de um sétimo núcleo do CPU para os produtores de jogos, vieram a saber-se, devido às fugas de informação, mas os documentos contêm muito mais informações fascinantes. Na verdade, eles dão-nos um cronograma completo de desenvolvimento do sistema desde que os alphas devkits chegaram pela primeira vez com aos produtores em abril de 2012, com refinamentos e melhoramentos adicionados recentemente em novembro de 2014.
Embora não possamos ver cada API especifica e otimização criada e adicionada neste período de 19 meses, felizmente o trabalho do resumo de adições chaves da Xbox One foram na sua maioria feitos para nós. A seção da documentação “o que é novo” não destaca apenas as mais recentes alterações ao sistema, que incorpora links para a área equivalente de todas e cada revisão SDK desde a concepção do sistema, destacando as mudanças que nos diziam como o sistema viria a ser e como o sistema foi melhorado - e sugerindo as funcionalidades que poderiam ser adicionadas.
O que também é fascinante é a mudança de foco à medida que progredimos através do tempo, refletindo a mudança no marketing e na perda do foco no Kinect como um esforço de engenharia no controlo de movimento natural na interface "NUI” em cair a favor da GPU e optimizações do desempenho, das quais vieram realmente à custa da característica da câmara.
O que também é claro é que os problemas de GPU da Microsoft eram muito mais conhecidos internamente - mesmo antes do lançamento. Talvez a maior surpresa das informações de SDK - além da revelação do sétimo núcleo do CPU - é a existência de dois drivers gráficos separados no hardware Radeon da Xbox One: sabemos sobre o mono-driver - a interface de GPU da Microsoft projetada para oferecer o melhor desempenho do hardware, mas também foi o modo de utilizador (UMD) - algo que verá referenciado ao longo deste artigo.
Uma fonte bem posicionada informou-nos que, embora fosse um comando especifico da Xbox One, que tinham imenso para verificar e corrigir, e que foi projetado para ajudar no debug para o software instalado funcionar na consola o mais rapidamente possível - à custa de desempenho bruto. Mas aqui estamos a ficar à frente de nós próprios. Vamos começar pelo princípio.
Hardware Alpha: abril de 2012 até fevereiro 2013
Quando os kits de desenvolvimento da primeira alpha fizeram chegaram aos produtores, não houve Xbox One como a conhecemos - a consola de nova geração da Microsoft era conhecida apenas pelo nome de código, Durango(a estado Mexicano, se estiverem interessados). Nesse momento não havia um hardware para a consola - foram dados aos produtores o que era basicamente um PC genérico para o futuro, amplamente equivalentes à visão da Microsoft para as capacidades técnicas da consola. É esta máquina que os hackers forneceram informações SuperDAE adquiridas, presumivelmente via portal do produtor titular da plataforma, acabando à venda no eBay . Nesse momento, os princípios básicos da máquina tornaram-se evidentes - o Durango foi baseado numa baixa potência de 64 bits com núcleos x86, usando o DirectX 11 no hardware gráfico.
Então qual era o estado atual da Xbox One nesse momento? Bem, o APU continha o CPU, GPU, Move Engines e ESRAM já tinham sido desenvolvidos, mas o hardware físico ainda estava em produção nos laboratórios da Microsoft. No entanto, o desenvolvimento de software continuou em ritmo acelerado na plataforma alpha. O que está claro é que grande parte dos esforços de codificação ainda estavam as ser concentrados em recursos multimédia. A conectividade com outros dispositivos usando o SmartGlass, recursos de interface naturais de utilizador com base no Kinect 2.0 e um foco em multimédia como um todo são temas que muitas das atualizações pareciam focar durante esse período.
Interface Natural de Utilizador Lembra-se do foco no Kinect/TV? Durante o período alpha do hardware, o sensor de movimento caluniado foi configurando como um pilar central do sistema, com os produtores a começarem a ter uma ideia do que poderia ser alcançado com o hardware de segunda geração. As primeiras versões do SDK ofereceram algumas ferramentas interessantes, incluindo a capacidade de comparar o resultado do Kinect original com o sensor de pré-Alpha do Durango. Nesse ponto, o hardware ainda estava longe de ser o final e só o stream de dados resultantes de IR e profundidades foram disponibilizados para fins de planeamento.
Olhando para as informações após o lançamento, vemos uma enorme seleção de mudanças e melhorias para suportar o novo sensor através da NUI 2.0 API. Rastreamento esquelético avançado, detecção através da mão, rastreamento de expressões, serviços de identificação e novos sistemas de voz foram todos introduzidos em agosto de 2012 com muitas funcionalidades adicionais introduzidas ao longo dos meses seguintes. Nesse ponto, é claro que o Kinect 2.0 era uma característica enorme para a Xbox One. O que é interessante é que até 2012 a Microsoft teve o conhecimento da rápida queda no interesse do Kinect para a Xbox 360, mas no entanto o foco sobre o sensor de movimento continuou. Talvez a dona da plataforma pensasse que iriam conseguir fazer isso pela segunda vez, mas igualmente provável é que todas as decisões-chave sobre o hardware já tivesse sido tomada - particularmente o foco na "sala de estar do futuro" - que a empresa tanto se focou.
Gráficos Os originais PCs para desenvolvimentos foram enviados com uma placa gráfica AMD padrão e os produtores receberam-na com DirectX 11 genérico. Em abril de 2012, porém, a Microsoft começou a lançar um driver específico para o Durango com funcionalidades limitadas conhecidas como o "modo de utilizador do Durango" ou UMD. As funcionalidades adicionais foram adicionadas regularmente para o UMD incluindo codificação e decodificação de vídeos do hardware, a funcionalidade tessellation D3D 11,1, alterações no uso do shader e muito mais. Em agosto, o driver do modo de utilizador tornou-se o padrão; dois meses depois, o apoio para a driver genérica foi completamente removida. As atualizações dos drivers continuaram a aparecer regularmente, como se podia esperar, mas não até ao lançamento mais recente do driver D3D monolítico - a interface GPU altamente otimizada que a Microsoft continuou a trabalhar até o UMD ficar obsoleto- as coisas começaram realmente a avançar.
Ferramentas de desenvolvimento: Em maio de 2012 a Microsoft reintroduziu o excelente desempenho profiler PIX, que serviu durante muito tempo a comunidade de desenvolvimento da Xbox para analisar e compreender as características do código de produção e desempenho. A versão inicial parecia bastante básica e as melhorias para o PIX vieram rapidamente após a sua introdução. Isto manifestou-se com a adição de um navegador de recursos com vista ao alvo da renderização e o buffer de profundidade, vendo-se os eventos do GPU, uma interface de utilizador em evolução e a capacidade de capturar baixa sobrecarga de tempo na execução de dados do CPU e GPU para uma análise mais detalhada. Em cima disso havia o evento definido pelo utilizador e a versão inicial de um monitor do sistema utilizado para criação de perfis em tempo real, capaz de exibir os contadores de desempenho em streaming a partir do devkit em tempo real. Além disso, muitas ferramentas adicionais foram adicionadas e melhoradas ao longo desse período inicial, incluindo alterações na codificação, modelos adicionais, implantação mais rápida para o teste, alterações na arquitetura e melhoria no código.
Input: O suporte da aplicação, pelo menos num nível básico, foi logo disponibilizado e rebatizado como SmartGlass, em agosto. Pouco antes, o suporte para o impulso dos gatilhos do comando é introduzido, o que sugere que os trabalhos de composição do novo comando estava em fase de conclusão nesse momento. As APIs estavam num estado de fluxo ao longo desse período.
Áudio: O áudio não parece desempenhar um papel enorme nesses primeiros dias sem o hardware final (a Xbox One tinha um hardware interno bastante poderoso dedicado ao áudio no APU, muito semelhante ao TrueAudio da AMD encontrado nas suas mais recentes placas gráficas do PC). A funcionalidade básica estava disponível no início, mas a emulação do áudio no hardware foi adicionado a meios de agosto, permitindo que os produtores testassem o código projetado para as aplicações de som.
Beta do Hardware - fevereiro de 2013 a agosto de 2013
No início de 2013, estava-se a aproximar rapidamente a revelação oficial da consola. Nessa altura a concepção do sistema já vinha finalmente em conjunto. Por volta de fevereiro, os devkits beta estavam em circulação para os produtores, com base na forma da console de retalho, usando o silicone final - embora o software ainda estivesse em desenvolvimento nesse momento. Os primeiros beta kits foram descritos como hardware “zebra” - consolas brancas com algumas partes pretas. Relatos contemporâneos sugeriram que os padrões a preto variavam de kit para Kit, a fim de identificar a fonte de quaisquer fugas de informação de hardware - uma situação engraçada dado que o SuperDAE e VGLeaks já tinha sido revelado praticamente tudo o que havia para saber a nível tecnológico do Durango. É interessante ver que algumas dessas fugas de informação antigas ainda existem quase literalmente na documentação exposta.
Em março de 2013, todo o suporte para o hardware alpha inicial desapareceu e o hardware beta “Zebra” tornou-se a caixa padrão para os produtores trabalharem. Nos meses seguintes, esses kits foram substituídos pela produção do hardware da Xbox One, diferenciando-se dos kits da zebra não apenas pela sua aparência física padrão, mas também pela sua capacidade de se adaptar às finais, reforçada da velocidade de relógio do CPU e GPU (1,75 GHz e 853MHz, respectivamente). Durante esse período, o desenvolvimento do software continuou:
GameDVR: Obviamente em desenvolvimento há algum tempo, foi curioso que o desenvolvimento da aparência do GameDVR a partir de março de 2013 coincidiu com o anúncio da PlayStation 4 e foram muito semelhantes a nível de funcionalidades. A partilha das experiências de jogo foi um elemento-chave para a Sony e Microsoft, e sem dúvida que isso pode ter sido devido à arquitetura de hardware muito semelhante de ambas as empresas, que optaram pela AMD.
Gráficos: As mudanças continuaram a amontoar-se na driver do modo de utilizador, mas em julho de 2013 a Microsoft começou a introduzir uma versão preview da driver monolítica Direct3D (conhecida como mono-driver quando mencionada publicamente), concebida para evoluir as características do estoque D3D para eliminarem recursos desnecessários e reduzindo despesas desnecessárias específicas da consola. Sim, notavelmente a Microsoft teve dois drivers de GPU em circulação até maio de 2014 quando o driver do modo de utilizador foi finalmente descartado. O mono-driver tornou-se a chave para um melhor desempenho para os futuros jogos da Xbox One, mas a versão utilizada para títulos de lançamento teriam sido um pouco abaixo do ideal em relação à versão em circulação nos dias de hoje. Uma seção no SDK nesse período exclamava alegremente: " Tear No More!" - Uma característica que parecia ver a introdução do v-sync e apoio v-sync adaptativa. Além disso, o suporte para a saída de 720p foi adicionada, mas parece que a saída era simplesmente downscaled para 1080p.
Xbox Live: Muitas das características associadas à Xbox One vieram online em 2013 e melhoradas, as APIs dos serviços da Xbox Live foram introduzidas, incluindo serviço de perfil, leaderboards sociais, e "presença rica“, mostrando o que um utilizador está a fazer em qualquer momento e atividade em tempo real.
Interface Natural de Utilizador: Outras melhorias foram parar ao Kinect, como a chegada do silicone final acompanhado pelo nível de produção do hardware da câmera. Nesse momento, as atualizações estavam focadas em fornecer granularidade adicional para o Kinect funcionar. Deteção da mão e polegar, boca e detecção do olho, detecção enquanto sentado foi melhorado e várias outras APIs concebidas para a interação foram adicionadas. No documento foi referido que a funcionalidade completa do Kinect só chegou à última da hora. Isso seria complicado para desenvolver títulos específicos para câmera, o que talvez explique porque até mesmo a própria Microsoft não apoiou corretamente o Kinect no lançamento.
A final atualização antes do lançamento parece ter lugar em Agosto de 2013, em que o terceiro pacote do serviço (ou QFE3) para o OS da Xbox One é lançado. Curiosamente, também há uma secção dedicada na documentação para preparar títulos para o lançamento da Xbox One. Um dos mais interessantes elementos contidos nesta secção é o caso da utilização de resoluções dinâmicas. O documento refere especificamente que se está a ter problemas para o rácio de fotogramas e resolução alvo, que os produtores deveriam considerar o redimensionamento da resolução com base na carga GPU. O que é fascinante é que a Microsoft fornece um método para fazer exatamente isso, permitindo que o sistema ajuste a resolução de frame-a-frame. É interessante ver que o único título que na verdade usa essa tecnologia é Wolfenstein: The New Order, mas não está claro se a API da Microsoft é utilizada ou se a abordagem da id Tech 5 é personalizada. Como o mesmo efeito está a ser usado na versão PS4, nós suspeitamos que é a última opção.
Até esse momento, a Microsoft estava ciente de que muitos títulos (incluindo vários seus) iriam ser lançados em resoluções sub-nativa, e a documentação aponta os pontos fortes do scaler da Xbox One, mencionando que é melhor do que o da Xbox 360, que já era muito boa. Isso até pode ser verdade, mas no lançamento a Xbox One teve alguns problemas de escala bastante desagradável (não menos do que foi o filtro de nitidez artificial intensa, removido no início de 2014) deixando-nos a pensar como a Microsoft poderia chamar a tecnologia de "um grande scaler".
Os detentores da plataforma também tomaram partido do anti-aliasing EQAA, tecnologia proprietária da AMD que tinha sido adicionada alguns meses antes do lançamento - embora nós não estejamos cientes de qualquer título que realmente a utilize. Também está feito para usar 4x MSAA se um título já estiver a usar a variante de 2x, devido à baixa sobrecarga do GPU, armazenando os dois primeiros fragmentos de cada pixel em ESRAM com os dois últimos na memória principal (que não são acessados com frequência devido à compressão). É uma teoria interessante e pode ter sido utilizada em Forza Horizon 2 - o único título AAA da Xbox One que estamos cientes de que, na verdade, usa 4x multi-sampling anti-aliasing.
Fevereiro a Novembro de 2014 - e por aí adiante
Há um grande buraco na documentação da Xbox One, sem as notas adicionais "O que há de novo" publicados entre agosto de 2013 e fevereiro de 2014. Se foram simplesmente omitidos ou se não existem de todo, não é claro. No entanto, o início de 2014 foi um período crucial para a Microsoft, com a tentativa de corrigir a sua estratégia frouxa de lançamento e resolver a diferencia do GPU com a PlayStation 4, da melhor maneira que podia. Imediatamente vimos notas indicando que os produtores tinham mais controlo sobre a gestão dos recursos ESRAM - aparentemente um gargalo para muitos títulos de lançamento.
Gráficos:Ao longo dos próximos meses, há uma abundância de atualizações correspondentes ao baixo nível D3D monolítico. O Hardware de vídeo da codificação/decodificação foi adicionado em março, juntamente com o suporte computação assíncrona do GPU. Em maio, o suporte para o driver do modo de utilizador foi completamente removido em favor do mono-driver, explicando (pelo menos em parte) a acentuada melhoria no desempenho do GPU da Xbox One nos títulos Q2 de 2014. O foco no mono-driver acabou por compensar em 2014, tendo a Microsoft recebido quase todos os meses mensagens de melhorias no desempenho do GPU, incluindo alguns aumentos notáveis na eficiência em julho.
Muitas das melhorias das melhorias de desempenho do GPU provém dos recursos extraídos das funcionalidade do Kinect - o XDK de junho e o seu impacto foi amplamente documentado na época. Os recursos do GPU disponibilizados desativaram as funcionalidades do Kinect e títulos que optam por não usar o reconhecimento por voz do Kinect, profundidade e processamento de IR são oferecidas em tempo de processamento adicional num núcleo do CPU. Além disso, o corte nos comandos de voz personalizados ajudou o desempenho do GPU aumentar, com 1 GB/s de largura de banda adicional.
Melhorias do Scaler: A qualidade do Scaler também foi melhorado em abril com novos controlos disponíveis para os produtores. De acordo com a atualização, é possível escolher entre sete tipos fixos de upscaling incluindo bilinear, quatro-tap sinc, além de quatro/seis/oito/dez-tap Lanczos, juntamente com seis-tap de banda limitada na escala de Lanczos. Este nível adicional de controlo melhora significativamente a qualidade de imagem em títulos sub-1080p e pode explicar porque o impacto de 900p vs diferença de resolução para 1080p era diminuída em títulos lançados ainda em 2014.
Áudio: Em maio de 2014 vimos a inclusão do suporte de música de fundo ao usar uma aplicação snapped, algo que a PS4 ainda não era capaz de fazer. Foi disponibilizado um sistema adequada para ajustar o volume de aplicativos snapped ou ao usar o Kinect para chat. Em julho houve refinamentos para o áudio do hardware e interação com o CPU, com a transição da memória usada pelo processador de controlo de áudio (ACP) para cache de memória uncached com uma redução nos custos da CPU quando se fazia a gestão e atualização do ACP. O suporte para o microfone USB também foi adicionado.
Ferramentas de desenvolvimento: O Profiler da Microsoft, PIX, continuou a receber atualizações e, em setembro, a Microsoft apresentou um visualizador ESRAM no sistema projetado para ajudar os produtores a maximizar o uso ultra-rápido do scratchpad. É interessante ver que, ao longo dos documentos, havia discussão para uma função de captura de imagens disponível para os produtores - algo que certamente seria útil para os jogadores como parte do sistema operacional principal. O recurso de captura de A/V continuou disponível no PIX para a Xbox 360 (que regista uns constantes 60 segundos de stream de um jogo, enquanto o PIX monitoriza o jogo) também foi disponibilizado para a Xbox One em agosto. Na Xbox One, o sistema é capaz de gravar continuamente esse fluxo, ao contrário da 360.
Input e NUI: A maioria das alterações feitas às funcionalidades do Kinect - além de roubar tempo de processamento - parece concentrar-se mais em correções de bugs. O rastreamento de erros foram abordados e foram feitas melhorias gerais, mas há claramente menos foco em conseguir mais do sensor. Também foram feitas melhorias para o imput do comando, tal como determinar exactamente quando o processamento do imput do comando acontece, proporcionando um maior controlo sobre a actualização de imput para que os núcleos executem o processamento. Há também a inclusão de suporte ao teclado para "aplicações exclusivas de retalho", sugerindo que as aplicações podem agora fazer uso de teclado.
Mudanças no multiplayer: Uma das maiores mudanças apresentadas nesses documentos diz respeito ao modo multiplayer e como ele é tratado. Rotulado como "Multiplayer 2014" e "Multiplayer 2015", respectivamente, há duas abordagens diferentes aqui apresentados em relação à forma como os jogadores estão conectados um ao outro para o jogo online. O projeto multiplayer existente baseia-se no conceito de party do jogo, onde os títulos usam uma construção no nível de sistema para gerenciar um grupo ativo de utilizadores ao jogar um jogo juntos. Todas as funções que juntam e fazem matchmaking são encaminhadas através desse grupo de jogo. O documento descreve como os jogadores são colocados em "sessões diretas de multiplayer (MPSD)" e o serviço de cloud era usado para armazenar e recuperar sessões multiplayer, que eram responsáveis pela gestão da party.
No entanto, para o Multiplayer em 2015 a Microsoft removeu essa barreira, eliminando a necessidade de ter acesso a funções multiplayer através do sistema party. Agora, as funções de multiplayer têm acesso direto ao usar sessões MPSD, ignorando completamente a necessidade do sistema party. Isso aparece para agilizar o processo, exigindo menos chamadas, que podem potencialmente causar problemas de desempenho numa particular sessão. A concepção e APIs para o Multiplayer de 2015 foram disponibilizados na forma de pré-visualização em setembro de 2014, mas ainda não estava claro quando é que iríamos começar a ver títulos a utilizarem esse projeto. Houve discussão sobre se Halo: The Master Chief Collection usava o design de 2015, mas com a nova tecnologia introduzida (em forma de pré-visualização) tão perto do lançamento do jogo, isso parece bastante improvável.
Evoluindo de um centro multimédia para uma máquina de jogos
Na Digital Foundry precisamos entender como funciona o hardware de jogos e as fugas de informação do SDK oferece-nos a maior mina de informações que temos sobre o desenvolvimento da Xbox One desde que entrevistámos os arquitetos do hardware em outubro de 2013. As minúcias técnicas são muitas vezes inconsequentes e às vezes reveladoras, mas são sempre fascinantes, proporcionando muito sobre a visão da direção da Microsoft nos 19 meses agitados no desenvolvimento da consola.
É fascinante comparar o cronograma das melhorias, otimizações e novas funcionalidades, quase todos que parecem vir em detrimento da ampla funcionalidade Kinect. Com o sétimo núcleo do CPU disponibilizada para os produtores juntamente com recursos adicionais do GPU, além de otimizações contínuas para o mono-driver, há uma trajetória clara de melhorias que podem explicar como a Xbox One conseguiu manter-se competitiva com a PS4 em vários títulos de alto perfil. Mas uma abundância de informações importantes permanecem desconhecidas - a Microsoft voltou atrás na reserva do CPU do sistema, mas no que é que 3GB de memória impediram os produtores?
Claro, é importante ver que as melhorias não aconteceram só nesse caso. É difícil imaginar que a Sony não tenha impulsionado as capacidades do seu hardware de uma forma similar. Não há dúvidas de que a Sony é mais lenta no lançamento de atualizações de funcionalidades para os consumidores, mas o lado do desenvolvimento permanece um mistério neste momento. As informações tendem a escorrer lentamente e de forma conservadora, geralmente via GDC/Siggragh , nas apresentações dos produtores (que levaram cerca de oito meses, para a nossa história sobre a reserva de memória do sistema PS4 a ser confirmada oficialmente), mas talvez a fuga de informação da Xbox One possa ser igualada com um equivalente da Sony em algum momento em breve. Independentemente disso, o importante é que os títulos devem melhorar em 2015 - e não apenas por causa de ferramentas de desenvolvimento de refinadas, mas também porque os produtores de jogos estará embarcarão nos seus segundos projetos para a PS4/Xbox One - e estamos ansiosos para os ver em ação.