Que linguagem de programação é boa para criar jogos móveis (Android e iOS, ambos)? O Xamarin C# é uma boa escolha?
Depende realmente do nível de abstracção com que te sentes confortável. Você pode escolher uma abordagem completamente nativa, ou ir com uma solução híbrida multiplataforma. Minha recomendação TLDR é Unity, mas se você quiser saber porque ler em.
Android
Para implementar jogos com gráficos 2D ou 3D no Android você pode escolher OpenGL ES 3.1 (disponível na API 21 e acima) Vulkan (API 24 e acima), ou Unity. Se você escolher ir com Vulkan então esteja preparado para escrever um monte de código C++ além do tradicional código Java/Kotlin do Android. Escrever seus gráficos em OpenGL pode ser uma experiência educacional, mas não é terrivelmente pragmático já que não goza nem como benefícios de performance de uma solução Vulkan nem como os benefícios de write-once-run-anywhere do Unity.
Você pode exportar um projeto Unity para o Android Studio mas você deve usar a versão '27.0.3&apos do BuildTools; e a versão gradle '3.1.3' para o seu projeto Android. O projeto exportado tem um componente de visão Unity que você incorpora no layout da atividade/fragmento e que você constrói o resto da sua aplicação androide. Esteja ciente de que a API 28 não era suportada pela Unity quando eu a usei pela última vez (final de 2018) e usando a última versão do gradle força você a usar a API 28, daí o requisito para a versão de gradle '3.1.3'. A Unidade para Android também requer que você tenha o NDK (Native Development Kit) e o CMake instalados. Estes podem ser adicionados mais facilmente abrindo o Android Studio e instalando-os na barra de menu em File > Preferences > Appearance and Behavior > System Settings > Android SDK > SDK Tools.
iOS
Para implementar jogos com gráficos 2D ou 3D no iOS você pode usar SpriteKit (2D), SceneKit (3D), OpenGL (depreciado no iOS 12 e superior), Metal (somente suportado no iOS 9.0 e superior), ou Unity. Eu não tenho mexido muito com Metal, mas como Vulkan ele faz uso pesado do C++. Novamente, usar OpenGL é extremamente educacional, mas no final das contas não é recomendado porque não será tão performante quanto uma solução Metal e tem o lado negativo de ser depreciado no iOS e MacOS pela Apple.
Exportar projetos da Unidade para um projeto iOS Xcode é muito similar a exportá-los para um projeto Android Studio, com duas exceções. A primeira é que você não será capaz de executar o aplicativo em um simulador, então você vai precisar de um dispositivo físico para ver o produto final. A segunda é que a lógica de visualização é exportada como ObjectiveC, então você precisará estar confortável escrevendo todo o seu projeto no ObjectiveC, ou aceitar que nenhum do seu código exportado pela Unidade será capaz de referenciar nada do resto da aplicação iOS, uma vez que o Objective C não pode chamar código Swift nativo (por design).
Xamarin
Eu nunca usei Xamarin especificamente para desenvolvimento de jogos, mas isso não significa que não possa ser feito. O próprio Xamarin não resolve a questão de qual pilha de tecnologia você vai alavancar para o seu jogo, com MonoGame, Sprite Kit, Scene Kit, e OpenTK, todos disponíveis como opções. O MonoGame em particular foi usado pelos desenvolvedores do Fez e do Bastion. As aplicações desenvolvidas com MonoGame podem ter como alvo iOS, MacOS, Android, Windows, PS4, Xbox One, e Nintendo Switch. Você pode ler mais aqui se estiver curioso: Introdução ao Desenvolvimento de Jogos com Xamarin - Xamarin
Artigos semelhantes
- Posso fazer um aplicativo como o Snapchat com C#/Xamarin.forms e executá-lo no iOS e Android? Como?
- Quais são as vantagens de uma linguagem de montagem na programação sobre uma linguagem de máquina?
- Qual é a diferença entre linguagem de máquina, linguagem de montagem e linguagem de alto nível em computadores?
- A linguagem Assembly é considerada uma linguagem de programação funcional?