Bem-vindo ao guia de desenvolvimento de jogos do Windows!
Observação
Antes de investir tempo desenvolvendo um jogo baseado na estrutura UWP, observe que a UWP não está mais em desenvolvimento ativo. Além disso, os jogos baseados em UWP não são mais aceitos na Xbox Store.
Este guia fornece uma coleção de ponta a ponta dos recursos e informações necessárias para desenvolver um jogo da Plataforma Universal do Windows (UWP). Uma versão em inglês (EUA) deste guia está disponível no formato PDF.
Introdução ao desenvolvimento de jogos para a Plataforma Universal do Windows (UWP)
Este guia fornece uma coleção de informações e recursos de ponta a ponta que ajudarão você a desenvolver seu jogo. As seções são organizadas de acordo com os estágios de desenvolvimento de jogos, para que você saiba onde procurar informações quando precisar.
Se você não estiver familiarizado com o desenvolvimento de jogos no Windows, o guia de introdução pode ser o ponto de partida. A seção Recursos de desenvolvimento de jogos também fornece uma pesquisa de alto nível de documentação, programas e outros recursos que são úteis ao criar um jogo. Se você quiser começar examinando algum código UWP, confira Exemplos de jogos.
Recursos de desenvolvimento de jogos
Desde documentação até programas de desenvolvedores, fóruns, blogs e exemplos, há muitos recursos disponíveis para ajudá-lo em seu percurso de desenvolvimento de jogos. Aqui está um resumo de recursos para tomar conhecimento sobre ao começar a desenvolver seu jogo do Windows.
Observação
Alguns recursos são gerenciados por meio de vários programas. Este guia aborda uma ampla gama de recursos, portanto, você pode achar que alguns recursos estão inacessíveis dependendo do programa em que você está ou de sua função de desenvolvimento específica. Para obter informações sobre a parceria com a Microsoft, confira Programas para desenvolvedores.
Documentação de desenvolvimento de jogos
Ao longo deste guia, você encontrará links profundos para a documentação relevante, organizada por tarefa, tecnologia e estágio de desenvolvimento de jogos. Para fornecer uma visão geral do que está disponível, aqui estão os principais portais de documentação para o desenvolvimento de jogos do Windows.
Portal principal do Centro de Desenvolvimento do Windows
Registrar-se como desenvolvedor no Partner Center é o primeiro passo para publicar seu jogo do Windows. Uma conta de desenvolvedor permite que você reserve o nome do jogo e envie jogos gratuitos ou pagos para a Microsoft Store para todos os dispositivos Windows. Use sua conta de desenvolvedor para gerenciar seu jogo e produtos no jogo, obter análises detalhadas e habilitar serviços que criam ótimas experiências para seus jogadores em todo o mundo.
A Microsoft também oferece vários programas de desenvolvedor para ajudar você a desenvolver e publicar jogos do Windows. É recomendável ver se há algum direito para você antes de se registrar em uma conta do Partner Center. Para obter mais informações, acesse Programas de desenvolvedor
Programas para desenvolvedores
Para publicar um jogo na Microsoft Store, você também precisará criar uma conta de desenvolvedor no Partner Center.
Exemplos de jogos
Há muitos exemplos de jogos e aplicativos do Windows disponíveis para ajudar você a entender os recursos de jogos do Windows e obter um início rápido no desenvolvimento de jogos. Os exemplos são desenvolvidos e publicados regularmente, portanto, não se esqueça de verificar ocasionalmente os portais de exemplo para ver as novidades. Você também pode observar os repositórios do GitHub para ser notificado sobre alterações e adições.
Aplicativos de exemplo da Plataforma Universal do Windows
Fóruns para desenvolvedores são um ótimo lugar para fazer e responder perguntas sobre desenvolvimento de jogos e conectar-se com a comunidade de desenvolvimento de jogos. Os fóruns também podem ser recursos fantásticos para encontrar respostas existentes para problemas difíceis que os desenvolvedores enfrentaram e resolveram no passado.
Fóruns para desenvolvedores sobre publicação de aplicativos e jogos
Os blogs de desenvolvedores são outro ótimo recurso para ver as informações mais recentes sobre o desenvolvimento de jogos. Você encontrará postagens sobre novos recursos, detalhes de implementação, práticas recomendadas, plano de fundo de arquitetura e muito mais.
No estágio de conceito e planejamento, você decide como será seu jogo e as tecnologias e ferramentas que você usará para dar vida a ele.
Visão geral das tecnologias de desenvolvimento de jogos
Quando você começa a desenvolver um jogo para a UWP, há várias opções disponíveis para elementos gráficos, entrada, áudio, rede, utilitários e bibliotecas.
Se você já decidiu todas as tecnologias que usará em seu jogo, então você está preparado. Caso contrário, o guia Tecnologias de jogos para aplicativos da UWP é uma excelente visão geral de muitas das tecnologias disponíveis e é altamente recomendável que você o leia para ajudar a entender as opções e como elas se encaixam.
Escolher sua tecnologia gráfica e linguagem de programação
Há várias linguagens de programação e tecnologias gráficas disponíveis para uso em jogos do Windows. O caminho que você toma depende do tipo de jogo que você está desenvolvendo, da experiência e das preferências do seu estúdio de desenvolvimento e dos requisitos de recursos específicos do seu jogo. Você usará C#, C++ ou JavaScript? DirectX, XAML ou HTML5?
DirectX
O Microsoft DirectX é a opção a ser escolhida para os elementos gráficos 2D e 3D de maior desempenho e multimídia.
O DirectX 12 é mais rápido e eficiente do que qualquer versão anterior. O Direct3D 12 permite cenas mais avançadas, mais objetos, efeitos mais complexos e utilização completa de hardware moderno de GPU em computadores Windows e Xbox One.
Se você quiser usar o pipeline de gráficos familiar do Direct3D 11, ainda se beneficiará dos novos recursos de renderização e otimização adicionados ao Direct3D 11.3. E, se você for um desenvolvedor de API do Windows da área de trabalho com raízes no Win32, ainda terá essa opção para o seu jogo do Windows.
Os diversos recursos e a profunda integração de plataforma do DirectX fornecem o poder e o desempenho necessários para os jogos mais exigentes.
O XAML é uma linguagem declarativa de interface do usuário fácil de usar com recursos convenientes, como animações, storyboards, associação de dados, gráficos escalonáveis baseados em vetor, redimensionamento dinâmico e grafos de cena. O XAML funciona muito bem para interface do usuário do jogo, menus, sprites e elementos gráficos 2D. Para facilitar o layout da interface do usuário, o XAML é compatível com ferramentas de design e desenvolvimento, como o Expression Blend e o Microsoft Visual Studio. O XAML é comumente usado com C#, mas C++ também é uma boa opção se esse for o seu idioma preferido ou se o jogo tiver altas demandas de CPU.
A linguagem de marcação HyperText (HTML) é uma linguagem de marcação de interface do usuário comum usada para páginas da Web, aplicativos e clientes avançados. Os jogos do Windows podem usar HTML5 como uma camada de apresentação completa com os recursos familiares de HTML, acesso à Plataforma Universal do Windows e suporte para recursos modernos da Web, como AppCache, Web Workers, tela, arrastar e soltar, programação assíncrona e SVG. Nos bastidores, a renderização HTML aproveita o poder da aceleração de hardware do DirectX, para que você ainda possa obter os benefícios de desempenho do DirectX sem escrever nenhum código extra. HTML5 é uma boa opção se você é proficiente com desenvolvimento na Web, portar um jogo da Web ou desejar usar camadas de linguagem e elementos gráficos que podem ser mais fáceis de abordar do que as outras opções. O HTML5 é usado com JavaScript, mas também pode chamar componentes criados com C# ou C++/CX.
Informações sobre o HTML5 e o Modelo de Objeto do Documento
A DirectX Graphic Infrastructure (DXGI) da Microsoft fornece interoperabilidade e compatibilidade entre várias tecnologias gráficas. Para gráficos de alto desempenho, você pode combinar XAML e DirectX; usando XAML para menus e outra interface do usuário simples e DirectX para renderizar cenas 2D e 3D complexas. O DXGI também fornece compatibilidade entre Direct2D, Direct3D, DirectWrite, DirectCompute e Microsoft Media Foundation.
Guia e referência de programação da DirectX Graphic Infrastructure
O C++/WinRT é uma linguagem de alto desempenho e baixa sobrecarga que fornece uma combinação poderosa de velocidade, compatibilidade e acesso à plataforma. O C++/WinRT facilita o uso de todos os ótimos recursos de jogos no Windows, incluindo DirectX e Xbox Live. Você também pode reutilizar bibliotecas e códigos C++ existentes. O C++/WinRT cria um código nativo rápido que não incorre na sobrecarga da coleta de lixo, portanto, o jogo pode ter um ótimo desempenho e baixo consumo de energia, o que leva a uma maior duração da bateria. Use C++/WinRT com DirectX ou XAML ou crie um jogo que use uma combinação de ambos.
C#
C# (pronuncia-se "C sharp") é uma linguagem moderna e inovadora que é simples, poderosa, type-safe e orientada a objetos. O C# permite o desenvolvimento rápido, mantendo a familiaridade e a expressividade das linguagens de estilo C. Embora seja fácil de usar, o C# tem inúmeros recursos avançados de linguagem, como polimorfismo, delegados, lambdas, fechamentos, métodos de iterador, covariância e expressões de consulta integrada à linguagem (LINQ). O C# é uma excelente opção se você o seu objetivo for XAML, quiser começar a desenvolver seu jogo rapidamente ou tiver experiência prévia em C#. O C# é usado principalmente com XAML, portanto, se você quiser usar o DirectX, escolha C++ ou escreva parte do jogo como um componente C++ que interage com o DirectX. Ou considere Win2D: uma biblioteca de gráficos Direct2D de modo imediato para C# e C++.
Usar componentes do Windows Runtime para combinar idiomas
Com a Plataforma Universal do Windows, é fácil combinar componentes escritos em linguagens diferentes. Crie componentes do Windows Runtime em C++, C# ou Visual Basic e, em seguida, chame-os de JavaScript, C#, C++ ou Visual Basic. Essa é uma ótima maneira de programar partes do seu jogo no idioma de sua escolha. Os componentes também permitem que você consuma bibliotecas externas que só estão disponíveis em um idioma específico, bem como use o código herdado que você já escreveu.
Se você estiver escolhendo o DirectX para o jogo, precisará decidir qual versão usar: Microsoft Direct3D 12 ou Microsoft Direct3D 11.
O DirectX 12 é mais rápido e eficiente do que qualquer versão anterior. O Direct3D 12 permite cenas mais avançadas, mais objetos, efeitos mais complexos e utilização completa de hardware moderno de GPU em computadores Windows e Xbox One. Como o Direct3D 12 funciona em um nível muito baixo, ele é capaz de fornecer a uma equipe de desenvolvimento gráfico especialista ou a uma equipe de desenvolvimento experiente do DirectX 11 todo o controle necessário para maximizar a otimização gráfica.
O Direct3D 11.3 é uma API de elementos gráficos de baixo nível que usa o modelo de programação Direct3D familiar e manipula mais a complexidade envolvida na renderização de GPU. Ele também tem suporte no Windows e no Xbox One. Se você tiver um mecanismo existente escrito no Direct3D 11 e não estiver pronto para ir para o Direct3D 12, poderá usar o Direct3D 11 no 12 para obter algumas melhorias de desempenho. As versões 11.3+ contêm os novos recursos de renderização e otimização habilitados também no Direct3D 12.
Dependendo das necessidades do seu jogo, usar pontes, mecanismos de jogo ou middleware pode economizar tempo e recursos de desenvolvimento e teste. Aqui estão algumas visões gerais e recursos para pontes, mecanismos de jogo e middleware.
Azure PlayFab
Agora parte da família Microsoft, o Azure PlayFab é uma plataforma completa de back-end para jogos ao vivo e uma maneira poderosa de os estúdios independentes começarem. Aumente a receita, o envolvimento e a retenção (e ainda corte custos) com serviços para jogos, análise em tempo real e LiveOps.
O Unity oferece uma plataforma para criar jogos e aplicativos 2D, 3D, VR e AR bonitos e envolventes. Ele permite que você realize sua visão criativa rapidamente e fornece seu conteúdo para praticamente qualquer mídia ou dispositivo.
A partir do Unity 5.4, o Unity dá suporte ao desenvolvimento do Direct3D 12.
O conjunto modular de ferramentas e tecnologias da Havok ajuda os criadores de jogos a alcançar novos níveis de interatividade e imersão. O Havok permite física altamente realista, simulações interativas e cinematismo impressionante. A versão 2015.1 ou posterior dá suporte oficialmente à UWP no Visual Studio 2015 em x86, 64 bits e Arm.
O Unreal Engine é um conjunto completo de ferramentas de desenvolvimento de jogos para todos os tipos de jogos e desenvolvedores. Para os jogos de console e PC mais exigentes, o Unreal Engine é usado por desenvolvedores de jogos em todo o mundo.
Agora que você decidiu o tipo de jogo que deseja criar e as ferramentas e a tecnologia gráfica que usará para criá-lo, você está pronto para começar a usar o design e o protótipo. Em sua essência, seu jogo é um aplicativo da Plataforma Universal do Windows, então é aí que você vai começar.
Introdução à Plataforma Universal do Windows (UWP)
A Plataforma Universal do Windows (UWP) fornece uma plataforma de API comum em dispositivos Windows. Jogos direcionados à UWP podem chamar APIs do WinRT que são comuns a todos os dispositivos. Como a UWP fornece camadas de API garantidas, você pode optar por criar um único pacote de aplicativo que será instalado em dispositivos Windows. E se você quiser, seu jogo ainda pode chamar APIs (incluindo algumas APIs clássicas do Windows do Win32 e .NET) específicas para os dispositivos em que seu jogo é executado.
Veja a seguir excelentes guias que discutem os aplicativos da Plataforma Universal do Windows em detalhes e são leituras recomendadas para ajudar você a entender a plataforma.
Introdução aos aplicativos da Plataforma Universal do Windows
A configuração e a preparação para desenvolver um aplicativo da Plataforma Universal do Windows são rápidas e fáceis. Os guias a seguir conduzem você pelo processo passo a passo.
Se você é um iniciante absoluto em programação na UWP e está considerando usar XAML em seu jogo (confira Escolher sua tecnologia gráfica e linguagem de programação), a série de vídeos de desenvolvimento do Windows 10 para iniciantes absolutos é um bom lugar para começar.
Anunciando a série de iniciantes absolutos do Windows 10 usando XAML (postagem no blog)
O gerenciamento de tempo de vida do processo, ou vida útil do aplicativo, descreve os vários estados de ativação pelos quais um aplicativo da Plataforma Universal do Windows pode passar. Seu jogo pode ser ativado, suspenso, retomado ou encerrado e pode fazer a transição por esses estados de várias maneiras.
Manipular transições de ciclo de vida do aplicativo
Os jogos compartilham alguns elementos comuns de interface do usuário e princípios de design com aplicativos; mas os jogos geralmente têm uma aparência, uma sensação e um objetivo de design exclusivos de sua experiência de usuário. Os jogos são bem-sucedidos quando o design atencioso é aplicado a ambos os aspectos: quando o jogo deve usar a experiência de usuário testada e quando ela deve divergir e inovar? A tecnologia de apresentação que você escolher para o jogo – DirectX, XAML, HTML5 ou alguma combinação dos três – influenciará os detalhes da implementação, mas os princípios de design aplicados são em grande parte independentes dessa escolha.
Separadamente do design de UX, o design de jogabilidade, como design de nível, ritmo, design mundial e outros aspectos, é uma forma de arte própria, uma que depende de você e de sua equipe, e isso não é abordado neste guia de desenvolvimento.
Seguir diretrizes de cor consistentes em seu jogo melhora a estética, auxilia a navegação e é uma ferramenta poderosa para informar o jogador sobre as funcionalidades do menu e do HUD. A coloração consistente de elementos do jogo, como avisos, danos, XP e conquistas, pode levar a uma interface do usuário mais limpa e reduzir a necessidade de rótulos explícitos.
O uso apropriado da tipografia aprimora muitos aspectos do seu jogo, incluindo layout de interface do usuário, navegação, legibilidade, atmosfera, marca e imersão de jogadores.
Um mapa da interface do usuário é um layout de navegação do jogo e menus expressos como um fluxograma. O mapa da interface do usuário ajuda todos os stakeholders envolvidos a entender a interface do jogo e os caminhos de navegação e pode expor possíveis bloqueios e becos sem saída no início do ciclo de desenvolvimento.
Aqui estão guias e referências para implementar áudio em jogos usando XAudio2, XAPO e Windows Sonic. O XAudio2 é uma API de áudio de nível baixo que fornece base de processamento e combinação de sinais para o desenvolvimento de mecanismos de áudio de alto desempenho. A API do XAPO permite a criação de objetos de processamento de áudio multiplataforma (XAPO) para uso no XAudio2 no Windows e no Xbox. O suporte a áudio do Windows Sonic permite que você adicione suporte para Dolby Atmos para Home Theater, Dolby Atmos para Fones de Ouvido e Windows HRTF ao seu aplicativo de mídia de streaming ou de jogo.
Melhor potência, melhor desempenho: seu jogo no DirectX 12
Kit de Ferramentas e bibliotecas do DirectX
O Kit de Ferramentas DirectX, a biblioteca de processamento de textura do DirectX, a biblioteca de processamento de geometria DirectXMesh, a biblioteca UVAtlas e a biblioteca DirectXMath fornecem textura, malha, sprite e outras classes auxiliares e funcionalidades do utilitário para o desenvolvimento do DirectX. Essas bibliotecas podem ajudar a economizar tempo e esforço de desenvolvimento.
Obter o Kit de Ferramentas DirectX para DirectX 12
Nesta fase, seu estúdio está totalmente envolvido e se movendo para o ciclo de produção, com o trabalho distribuído em toda a sua equipe. Você está refinando, refatorando e estendendo o protótipo para transformá-lo em um jogo completo.
Notificações e blocos dinâmicos
Um bloco é a representação do jogo no Menu Iniciar. Blocos e notificações podem gerar interesse do jogador mesmo quando eles não estão jogando seu jogo no momento.
Habilitar compras de produto no aplicativo (complemento)
Um complemento (produto no aplicativo) é um item suplementar que os jogadores podem comprar no jogo. Os complementos podem ser níveis de jogo, itens ou qualquer outra coisa que seus jogadores possam aproveitar. Usados adequadamente, os complementos podem gerar receita ao mesmo tempo em que melhoram a experiência do jogo. Você define e publica os complementos do jogo por meio do Partner Center e habilita as compras no aplicativo no código do jogo.
Depuração, otimização de desempenho e monitoramento
Para otimizar o desempenho, você pode aproveitar o Modo de Jogo no Windows para fornecer aos seus jogadores a melhor experiência de jogo possível utilizando totalmente a capacidade do hardware atual.
O Windows Performance Toolkit (WPT) consiste em ferramentas de monitoramento de desempenho que produzem perfis de desempenho aprofundados de sistemas operacionais e aplicativos do Windows. Isso é especialmente útil para monitorar o uso de memória e melhorar o desempenho do jogo. O Windows Performance Toolkit está incluído no SDK do Windows e no Windows ADK. Este kit de ferramentas consiste em duas ferramentas independentes: Windows Performance Recorder (WPR) e Windows Performance Analyzer (WPA). O ProcDump, que faz parte do Windows Sysinternals, é um utilitário de linha de comando que monitora picos de CPU e gera arquivos de despejo durante falhas de jogo.
Algumas partes do desenvolvimento do DirectX podem ser matizadas e complexas. Quando você chega ao ponto, durante a produção, em que precisa se aprofundar nos detalhes do mecanismo do DirectX ou depurar problemas de desempenho difíceis, os recursos e as informações desta seção podem ajudar.
Ferramenta de ajuste e depuração de desempenho para DirectX 12 no Windows
Desenvolva jogos prontos para o mundo para a plataforma Windows e saiba mais sobre os recursos internacionais integrados aos principais produtos da Microsoft.
Não deixe que problemas de certificação atrasem a versão do jogo. Aqui estão as políticas e os problemas comuns de certificação sobre os quais você deve estar ciente.
Contrato de Desenvolvedor de Aplicativos da Microsoft Store
O manifesto da Microsoft Store (StoreManifest.xml) é um arquivo de configuração opcional que você pode incluir no pacote do aplicativo. O manifesto da Microsoft Store fornece recursos adicionais que não fazem parte do arquivo AppxManifest.xml. Por exemplo, você pode usar o manifesto da Microsoft Store para bloquear a instalação do jogo se um dispositivo de destino não tiver o nível mínimo de recurso do DirectX especificado ou a memória mínima do sistema especificada.
Depois de terminar o desenvolvimento e enviar seu jogo, não é fim de jogo. Você pode terminar de desenvolver na versão 1, mas a jornada do seu jogo no marketplace apenas começou. Você desejará monitorar o uso e o relatório de erros, responder aos comentários do usuário e publicar atualizações em seu jogo.
O Visual Studio Application Insights fornece análise de desempenho, telemetria e uso para o seu jogo publicado. O Application Insights ajuda você a detectar e resolver problemas após o lançamento do jogo, monitorar e melhorar continuamente o uso e entender como os jogadores continuam interagindo com seu jogo. O Aplicativo Insights funciona adicionando um SDK ao seu aplicativo, que envia a telemetria para o Portal do Azure.
Para atualizar o jogo publicado, envie um novo pacote de aplicativo com um número de versão mais alto. Depois que o pacote passar pelo envio e pela certificação, ele estará automaticamente disponível para os clientes como uma atualização.
O Xbox Live é uma rede de jogos de primeira linha que conecta milhões de jogadores em todo o mundo. Os desenvolvedores obtêm acesso a recursos do Xbox Live que podem aumentar organicamente o público de seus jogos, incluindo presença do Xbox Live, placares de líderes, salvar na nuvem, hubs de jogos, clubes, chat de grupo, DVR de jogos e muito mais.
No Team Xbox, acreditamos que, quando todo mundo joga, todos nós ganhamos. Estamos comprometidos em garantir que o máximo possível de desenvolvedores tenham as ferramentas necessárias para criar experiências acessíveis. Este roteiro de aprendizagem apresenta os conceitos fundamentais da acessibilidade de jogos para desenvolvedores de jogos, plataformas e hardware que buscam expandir o conhecimento sobre esse assunto.